如何从另一个表中不存在值行的表中选择一行?

时间:2012-05-24 09:16:43

标签: sql

假设我有两个相同的表,A和B,行“x”。

我想选择A中的所有元素,其中A中x的值不是B的x的任何值。

我该怎么做?

5 个答案:

答案 0 :(得分:4)

您也可以这样做:

SELECT * FROM TableA
LEFT JOIN TableB on TableA.X = TableB.X
WHERE TableB.X IS NULL

(对于您问题中非常简单的示例,NOT EXISTS / NOT IN方法可能更可取,但您的真实查询更复杂,这是一个选项吗可能想要考虑;如果,对于instace,你想要TableB中有som信息的地方有匹配,但也想知道哪里没有一个)

答案 1 :(得分:2)

我很难理解你需要什么 无论如何试试这个:

SELECT * FROM tableA 
WHERE x not IN (SELECT x FROM tableB)

答案 2 :(得分:2)

select *
from TableA
except
select *
from TableB

答案 3 :(得分:1)

最快的是左连接

SELECT * FROM A LEFT JOIN B ON A.X = B.X WHERE B.X IS NULL

答案 4 :(得分:1)

使用它:

select * from a where x not in (select x from b)