比较查询返回的行
Comparing Rows Returned by a Query
我有以下表格:
员工 (empid,name,age)
预订 (bookingid,empid,cid)
汽车(cid、名称、类型)。
内容是这样的:
员工:
- emp1 , A , 32
- emp2, B, 36
- emp3, C, 25
- emp4、D、40
- emp5 , E , 45
预订:
- 1 , emp1, car1
- 2 , emp1 , car3
- 3, emp1, car2
- 4 , emp2 , car2
- 5 , emp3 , car3
- 6, emp4, car1
- 7 , emp4 , car2
- 8 , emp5 , car3
- 9 , emp5 , car2
- 10, emp5, car1
汽车:
- car1,一辆,红色
- car2,二,蓝色
- 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'
)
我有以下表格:
员工 (empid,name,age)
预订 (bookingid,empid,cid)
汽车(cid、名称、类型)。
内容是这样的:
员工:
- emp1 , A , 32
- emp2, B, 36
- emp3, C, 25
- emp4、D、40
- emp5 , E , 45
预订:
- 1 , emp1, car1
- 2 , emp1 , car3
- 3, emp1, car2
- 4 , emp2 , car2
- 5 , emp3 , car3
- 6, emp4, car1
- 7 , emp4 , car2
- 8 , emp5 , car3
- 9 , emp5 , car2
- 10, emp5, car1
汽车:
- car1,一辆,红色
- car2,二,蓝色
- 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'
)