[英]SQL: Select Rows which does not have a corresponding userID in second table
[英]SQL select rows from table A which have no rows in table B
table A table B
---------- ---------
id name a_id
1 Chris 1
2 Steve
3 Allen
什么是正确的sql查询,以选择A中所有ID不在表B中出现的行。
Returns: 2 Steve, 3 Allen
有正确的方法,也有易于理解的方法。 任何中途的sql引擎都会在后端将它们变成相同的东西,因此我总是用一种简单的方式编写它:
select * from A where id not in (select a_id from B)
select
A.id,
A.Name
from A
left join B on A.id = B.A_id
where
B.A_id is null
SELECT *
FROM TableA
WHERE id IN (
SELECT id
FROM TableA
EXCEPT
SELECT a_id
FROM TableB
)
尝试这个:
SELECT A.*
FROM A
LEFT JOIN B ON B.A_id = A.id
WHERE B.a_id IS NULL
由于有很多方法可以通往罗马或StackOverflow,因此有另一种选择:
SELECT * FROM [A] AS [tblA]
WHERE NOT EXISTS (SELECT * FROM [B] AS [tblB] WHERE [tblB].[A_id] = [tblA].[id])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.