内部连接查询的相反

时间:2010-10-28 16:16:26

标签: sql-server tsql inner-join outer-join

有人可以帮助我为scernerio编写sql,如下所示:

Table 1

2 columns: ID, Name

Table 2

2 columns: ID, Name

我想要一个查询来显示表1中不在表2中的名称。因此,过滤掉表2中表2中的所有名称是结果查询。使用ID进行过滤而不是名称。

这将帮助我完成我想做的事情。提前致谢

6 个答案:

答案 0 :(得分:49)

Select * from table1
left join table2 on table1.id = table2.id
where table2.id is null

答案 1 :(得分:23)

这应该比left join...is null版本更好。有关比较,请参阅herehere

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);