SQL选择值不匹配的位置

时间:2017-10-17 20:25:43

标签: mysql sql database sqlite

我有2张桌子。一个是people,其中包含名称,ssn等。另一个是cars,其中包含ssn,make,model等。

如何从people表中选择ssn列与cars表中的任何ssn不匹配?

组合表有ssn, name, etc, carssn, carid,并且当表连接时,cars表上没有ssn的任何人对这两列都有NULL。

3 个答案:

答案 0 :(得分:4)

我会使用not exists

select p.*
from people p
where not exists (select 1 from cars c where c.ssn = p.ssn);

答案 1 :(得分:0)

我会使用not in

select *
from people
where ssn not in (select ssn from cars);

如果您想使用联接,请按照问题中的说明使用is null

select p.*
from people p
left join cars c using (ssn)
where c.ssn is null;

答案 2 :(得分:0)

也可以使用ALL

select *
from people
where ssn != ALL(select ssn from cars);

如果ssn中的cars永远不是NULL。如果ssn有时NULL比您使用<{p}}

select *
from people
where ssn != ALL(select ssn from cars where ssn IS NOT NULL);

您应该使用NULL

担心解决方案NOT IN