我有一个sql表,其记录包含类型A,B和C.有些记录只有B和C类型。如何使用sql查询找到只有B和C类型的记录?
Emp id type
1 A
1 B
1 C
2 B
2 C
3 A
3 C
4 A
4 B
所以我的查询应该返回员工ID 2,因为它没有A类型。
答案 0 :(得分:1)
select empId
from your_table
group by empId
having sum(case when type not in ('B','C') then 1 else 0 end) = 0
答案 1 :(得分:0)
您想使用自联接或嵌套子选择:
select * from employees a
where type in ('B','C')
and not exists
(select 1 from employees b
where a.id = b.id
and b.type = 'A')
这将返回所有类型为B或C但不是A的员工记录。