0

我有 2 张桌子

Emp1
ID | Name
1  | X
2  | Y
3  | Z

Emp2
ID | Salary
1  | 10
2  | 20

我想显示IDEmp1 中不存在于 Emp2 中的 s 而不使用NOT IN

所以结果应该是这样的

ID
3

现在我所做的是:

select  e1.ID
from Emp1 e1 left join  Emp2 e2
on e1.ID <> e2.ID 

但我得到了这个:

ID
1
2
3
3

所以我该怎么做 ??不使用NOT IN

4

4 回答 4

5

尝试left join以下is null条件

select e1.id 
from emp1 e1
left join emp2 e2 on e2.id = e1.id
where e2.id is null

not exists条件如下

select e1.id 
from emp1 e1
where not exists
(
  select 1
  from emp2 e2
  where e2.id = e1.id
)
于 2013-08-16T09:47:39.487 回答
3

用这个

select id from emp1
except
select id from emp2;

SQL小提琴

于 2013-08-16T09:50:18.373 回答
1

尝试这个:

SELECT  
    e1.ID
FROM Emp1 e1 LEFT JOIN Emp2 e2 on e1.ID = e2.ID 
WHERE e2.ID IS NOT NULL
于 2013-08-16T09:49:53.120 回答
1

你需要的是parado已经说过的。这是其他一些联接的好图片以及它们返回的范围:

在此处输入图像描述

萨拉约格

于 2013-08-16T09:56:19.350 回答