Re: [SQL ] MySQL 如何做差集 (MINUS)?

看板Database作者 (寶貝豬)時間15年前 (2008/11/07 00:44), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
用巢狀方式即可. SELECT id FROM (SELECT id FROM a WHERE condition_1) AS TA WHERE id NOT IN (SELECT id FROM b WHERE condition_2); 而且可能速度還會比你預想中的快, 並不會太慢. ※ 引述《eliang ()》之銘言: : 我想做下面事情: : SELECT id FROM a WHERE condition_1 : MINUS : SELECT id FROM b WHERE condition_2 : (假設兩次 SELECT 的結果各自都不重複) : 也就是第一個 SELECT 的結果, : 減去第二個 SELECT 的結果, : 但是 MySQL 不支援 MINUS 運算子, : 我試著在網路上找答案, : 但只找到沒有 WHERE 的解法, 如: : SELECT id FROM a : MINUS : SELECT id FROM b : 可改寫成: : SELECT a.id : FROM a LEFT JOIN b ON a.id=b.id : WHERE b.id IS NULL : 我嘗試把原先的條件式加上去: : SELECT a.id : FROM a LEFT JOIN b ON a.id=b.id : WHERE condition_1 AND condition_2 AND b.id IS NULL : 結果是錯的, : 想請問如果兩個 SELECT 後面都有 WHERE 子句, : 應該如何改寫呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.253.114

11/07 15:51, , 1F
謝謝!
11/07 15:51, 1F
文章代碼(AID): #194nxhMs (Database)
文章代碼(AID): #194nxhMs (Database)