当连接 2 个表并说 table.column1<>table2.column 时,它给了我多个记录,而不是不等于记录



我在两个表中都有 2 个带有员工 ID 的表

select a.c1
from employee a 
join employee1 b on a.c1 <> b.c1 

这个给出一对多记录,而不是不等于记录。

我是第一次使用SQL Sever。此查询将在 IBM DB2 上工作,不确定为什么它在 SQL Server 中不起作用

在任何数据库中,此查询都执行相同的操作。 如果您这样做,则可以更好地理解这一点:

select a.c1, b.c1
from employee a cross join
employee1 b
where a.c1 <> b.c1 ;

也就是说,它从两个不相等的表中返回每对c1值。 它是笛卡尔积的子查询。

我猜您希望第一个表中没有c1值。 为此,not exists是一个非常合理的方法:

select e.c1
from employee e
where not exists (select 1 from employee1 e1 where e1.c1 = e.c1);

我认为您只是想让表 A 中不在表 B 中的员工。

select c1 from employee where c1 not in (select c1 from employee1)