如何编写一个查询来获取所有驾驶所有可用巴士的司机?
表总线
--------
BUS_ID
--------
1
2
3
4
表驱动程序
-----------------------
BUS_ID | DRIVER_NAME
-----------------------
1 | John
2 | John
1 | Max
2 | Max
3 | Max
4 | Max
2 | Bill
3 | Ron
4 | Ron
1 | Ron
2 | Ron
在这个例子中它应该返回
DRIVER_NAME
-----------
Max
Ron
注意:不要对查询中的任何值进行硬编码。
我写了以下内容
SELECT DRIVER.DRIVER_NAME
FROM DRIVER
WHERE BUS_ID = ALL( SELECT BUS_ID FROM BUS);
最佳答案
将分组
与having
子句结合使用:
SELECT D.DRIVER_NAME
FROM DRIVER D
GROUP BY D.DRIVER_NAME
HAVING COUNT(*) = (SELECT COUNT(*) FROM BUS);
DRIVER_NAME
-----------
Ron
Max
关于sql - 如何从一个表中获取与另一个表中的所有值匹配的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885513/