**Table A**
1
2
3
4
5
6
**Table B**
2
3
5
如何选择仅存在于表B中的条目ID?在这个例子中,我正在寻找一个返回1,4和6的查询。
答案 0 :(得分:2)
尝试
select value from B where value not in (select value from A)
获取B中不在A中的值。
要获得相反的结果(A中的值不在B中),请使用
select value from A where value not in (select value from B)
答案 1 :(得分:2)
假设该列名为“id”,则:
SELECT *
FROM tableA a
WHERE NOT EXISTS (SELECT 1 FROM tableB WHERE id = a.id)
或
SELECT *
FROM TableA
WHERE id NOT IN (SELECT id FROM tableB)
您可能需要测试以查看哪种效果最佳。 MySQL可能有点不可预测。
答案 2 :(得分:0)
这可以避免IN
+子查询:
SELECT A.value FROM A
LEFT OUTER JOIN B ON (A.value = B.value)
WHERE B.value IS NULL
因为对表A中的每个找到的行执行了IN (subquery)
isn't optimized