从两个表SQL获取唯一的不同IDS

时间:2019-10-02 20:55:00

标签: sql

我有以下内容(请注意,ID不是唯一的):

表1:

ID  Name    Desc
-----------------
1   Joe     etc.
2   Bob     etc.
3   Jane    etc.

表2:

ID  Report       Email.
--------------------------------
1   report1      joe@gmail.com
4   report4      jen@gmail.com
4   report4-2    jen@gmail.com

我希望能够识别来自TABLE1的哪些IDS不在TABLE2中。

我尝试过类似的事情:

select distinct table1.id 
from table1, table2
where exists { select table1.id from table1 where table1.id != table2.id)

但是我似乎收到了很多使Oracle SQL Developer失败的结果。我想要的理想结果是:

2
3

在表2中不存在这两个ID的地方。

3 个答案:

答案 0 :(得分:0)

您可以使用LEFT JOIN反模式:

SELECT t1.id
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id
WHERE t2.id IS NULL

如果id中有重复的table1,则可以使用SELECT DISTINCT代替SELECT

注意:您的原始查询距离没有那么远。基本上,您不需要加入(而是使用相关子查询),而您想使用NOT EXISTS而不是EXISTS

select distinct table1.id 
from table1
where not exists(
    select 1 from from table2 where table1.id = table2.id
)

答案 1 :(得分:0)

尝试一下:

select distinct id
from table1
where ID not in (select distinct id
                from table2)

答案 2 :(得分:0)

另一种选择:select id from table1 where id not in (select id from table2)