作者bobju (宝贝猪)
看板Database
标题Re: [SQL ] MySQL 如何做差集 (MINUS)?
时间Fri Nov 7 00:44:22 2008
用巢状方式即可.
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
1F:推 eliang:谢谢! 11/07 15:51