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

时间:2011-04-02 09:25:58

标签: sql

table A      table B
----------   ---------
id name      a_id
1  Chris     1
2  Steve
3  Allen

选择A中所有行的正确sql查询是什么?表B中没有出现id。

Returns: 2 Steve, 3 Allen

5 个答案:

答案 0 :(得分:1)

有正确的方法,有易于理解的方式。任何中途不错的sql引擎都会将它们变成后端的同一个东西,所以我总是以简单的方式写这个:

select * from A where id not in (select a_id from B)

答案 1 :(得分:1)

select 
  A.id,  
  A.Name  
from A   
  left join B on A.id = B.A_id  
where 
  B.A_id is null

答案 2 :(得分:1)

SELECT *
FROM TableA
WHERE id IN (
  SELECT id
  FROM TableA
  EXCEPT
  SELECT a_id
  FROM TableB
)

答案 3 :(得分:0)

试试这个:

SELECT A.*
  FROM A
  LEFT JOIN B ON B.A_id = A.id
 WHERE B.a_id IS NULL

答案 4 :(得分:0)

由于有很多方法可以导致罗马或StackOverflow,这里有另一种选择:

SELECT * FROM [A] AS [tblA] 
  WHERE NOT EXISTS (SELECT * FROM [B] AS [tblB] WHERE [tblB].[A_id] = [tblA].[id])