有人可以帮助我为scernerio编写sql,如下所示:
Table 1
2 columns: ID, Name
Table 2
2 columns: ID, Name
我想要一个查询来显示表1中不在表2中的名称。因此,过滤掉表2中表2中的所有名称是结果查询。使用ID进行过滤而不是名称。
这将帮助我完成我想做的事情。提前致谢
答案 0 :(得分:49)
Select * from table1
left join table2 on table1.id = table2.id
where table2.id is null
答案 1 :(得分:23)
这应该比left join...is null
版本更好。有关比较,请参阅here和here。
select t1.id, t1.name
from table1 t1
where not exists(select null from table2 t2 where t2.id = t1.id)
答案 2 :(得分:16)
使用此查询
select
t1.*
from table1 t1
left outer join table2 t2
on t1.id=t2.id
where t2.id is null
这可以通过将t1中的所有内容连接到t2中存在的任何内容来实现。 where子句过滤掉t2中不存在的所有记录。
答案 3 :(得分:3)
SELECT Table1.ID, Table1.Name, Table2.ID
FROM Table1 LEFT OUTER JOIN Table2 ON Table1.ID = Table2.ID
WHERE Table2.ID IS NULL
我认为应该这样做。
答案 4 :(得分:0)
SELECT * FROM table1
WHERE table2.id NOT IN (SELECT id FROM table2)
答案 5 :(得分:0)
试试这个:
select t1.*
from table1 as t1
where t1.id not in
(select distinct t2.id from table2 as t2);