mysql显示未加入的结果

ioekq8ef  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(382)

我使用以下查询连接两个表:

select * from t1
LEFT JOIN t2 ON t1.First1=t2.FirstName 
and t1.Last1=t2.LastName 
and t1.City=t2.City
and t1.ST=t2.State;

现在,如何运行一个单独的查询来打印t2中未联接的行?
我尝试在字段中使用not-in,但收到错误:错误代码:1241。操作数应包含1列

select * from t2 where t2.RefID NOT IN (
select * from t1,t2 where t1.First1=t2.FirstName 
and t1.Last1=t2.LastName 
and t1.City=t2.City
and t1.ST=t2.State);
yfwxisqw

yfwxisqw1#

试试这个:

SELECT * FROM t2
WHERE NOT EXISTS(SELECT 1 FROM t1
                  WHERE t1.First1=t2.FirstName 
                    AND t1.Last1=t2.LastName 
                    AND t1.City=t2.City
                    AND t1.ST=t2.State);

使用前 NOT IN 你应该记住:
关于not exists和not in最重要的一点是,与exists和in不同,它们在所有情况下都不是等价的。具体来说,当涉及空值时,它们将返回不同的结果。具体地说,当子查询返回一个null时,not in将不匹配任何行。

h79rfbju

h79rfbju2#

翻转连接并检查不匹配的。。。

select * from t2
LEFT JOIN t1 ON t1.First1=t2.FirstName 
and t1.Last1=t2.LastName 
and t1.City=t2.City
and t1.ST=t2.State
WHERE t1.someid IS NULL
;

相关问题