Re: [SQL ] MySQL 如何做差集 (MINUS)?
用巢狀方式即可.
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):