繁体   English   中英

SQL从表A中选择表B中没有行的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM