使用NOT运算符使用多个表来筛选数据

时间:2019-03-29 01:55:33

标签: sql sql-server subquery operators

我有一个作业问题,要求我查找“哪些员工未分配给任何HP计算机?”

我尝试了以下方法:

select empname from Employee where empnum in
(select empnum from PC where comp in
  (select comp from computer where MFRNAME NOT LIKE 'HP'))

但是。我仍然从拥有两台计算机的员工Douglas Dally那里获取数据。其中一个是HP,另一个不是HP。但是我想只能找到根本不使用任何HP计算机的员工。我该如何筛选出这个结果?

我在下面的数据上附加了一个链接。

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您想让同样不使用HP笔记本电脑的员工也可以使用not exists

select empname
from Employee em
where not exists (
  select 1
  from PC p 
  join comp c on c.comp = p.comp 
  where em.empnum = p.empnum  
  and c.MFRNAME like '%HP%'
)  

这应该为您提供不使用像HP这样的计算机的员工,如果HP是绝对字符串,那么您可以提及c.MFRNAME = 'HP'