SQL - 如何在sql表中查找具有特定类型的记录

时间:2018-03-22 21:32:47

标签: sql sql-server sql-server-2008

我有一个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类型。

2 个答案:

答案 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的员工记录。