比较查询返回的行

Comparing Rows Returned by a Query

我有以下表格:

员工 (empid,name,age)
预订 (bookingid,empid,cid)
汽车(cid、名称、类型)。
内容是这样的:

员工:

  1. emp1 , A , 32
  2. emp2, B, 36
  3. emp3, C, 25
  4. emp4、D、40
  5. emp5 , E , 45

预订:

  1. 1 , emp1, car1
  2. 2 , emp1 , car3
  3. 3, emp1, car2
  4. 4 , emp2 , car2
  5. 5 , emp3 , car3
  6. 6, emp4, car1
  7. 7 , emp4 , car2
  8. 8 , emp5 , car3
  9. 9 , emp5 , car2
  10. 10, emp5, car1

汽车:

  1. car1,一辆,红色
  2. car2,二,蓝色
  3. car3,三,红色

我的问题是:return 所有预订了非红色汽车的员工姓名的查询是什么?

已编辑
我第一次应该更具体地回答我的问题。
这个link How can I join two tables but only return rows that don't match?
它是关于比较来自不同 tables.The post 的相同字段,清楚地表明用户需要比较来自两个表的行和 return 不匹配的行。
但这不是我的 case.As 我的标题所暗示的,我想知道是否可以比较通过执行查询编辑的行 return。
我想获得至少没有预订一辆红色汽车的员工姓名。 考虑到表中的值,
员工 1 和 5 已经预订了所有汽车。
员工 3 只预订了一辆红色汽车并且
员工 4 预订了一辆红色和一辆绿色汽车。
员工 2 预订了绿色汽车。
现在,我的问题是 return only name of employee 2 的查询是什么。(我知道我可以通过在 where 子句中指定 type='Green' 来做到这一点,但是失败了当颜色超过两种时。)

select DISTINCT e.Name from #Employee e
inner join #Booking b on e.EmpID = b.EmpID
where e.EmpID not in (
    select b.EmpID from #Booking b
    inner join #Cars c on b.CID = c.CID
    where [type] = 'red'
)