我在两个表中都有 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)