可能重复:
What's the difference between NOT EXISTS vs. NOT IN vs. LEFT JOIN WHERE IS NULL?
如果表A中的表中的键不存在,我需要查询将从表A中检索记录的查询。
任何帮助将不胜感激。
由于
答案 0 :(得分:8)
select a.*
from
tableA a
left join tableB b
ON a.id = b.id
where
b.id is null
答案 1 :(得分:4)
SELECT *
FROM A
WHERE ID NOT IN
(SELECT ID FROM B)
答案 2 :(得分:4)
如果密钥包含多个列,则上述解决方案都不起作用。
如果表格有复合主键,则必须使用类似下面的“NOT EXISTS”子句。
SELECT *
FROM TableA AS a
WHERE NOT EXISTS (
SELECT *
FROM TableB b
WHERE b.id1 = a.id1
AND b.id2 = a.id2
AND b.id3 = a.id3
);
答案 3 :(得分:2)
使用左连接。数据库尝试使用id字段将数据集从TableB映射到TableA。如果TableB中没有可用的拟合数据集,则TableB数据变为NULL。现在您只需要检查TableB.id是否为NULL。
SELECT TableA.* FROM TableA LEFT JOIN TableB ON TableA.id = TableB.id WHERE TableB.id IS NULL
答案 4 :(得分:0)
假设: TableA的Id = Id TableB的Id = Id
select * from TableA ta where ta.Id not in (select Id from TableB)
答案 5 :(得分:0)
SELECT * FROM TableA
WHERE NOT Exists(SELECT * FROM TableB WHERE id=TableA.id)
也有效,而且几乎是自我记录......