在数据库中,我有一些客户租用的汽车。我想找到所有客户租用的汽车,并显示他们的车牌号。换句话说,我想在MySql中进行SQL分区。 我的数据库是这样的:
客户
ID、姓名
1、约翰
2、斯科特
汽车
车牌编号,颜色
1111,红色
2222,黑色
租金
ID、车牌号、日期
1, 1111, 2010-01-01
1, 1111, 2010-02-01
2、1111 2010-03-02
2, 2222, 2010-01-02
按照一些说明,我有以下查询,但无法找到所有客户租用的汽车(正确的结果应该是 Platenr=1111)。查询出了什么问题?
SELECT PlateNr
FROM rents as R1
WHERE NOT EXISTS
(SELECT car.PlateNr
FROM car
WHERE NOT EXISTS
(SELECT rents.PlateNr
FROM rents
WHERE rents.PlateNr=R1.PlateNr));
最佳答案
我会将此查询写为:
SELECT PlateNr
FROM Rents
GROUP BY PlateNr
HAVING COUNT(DISTINCT ID) = (SELECT COUNT(*) FROM Customer);
用简单的英语来说,这就是找到所有租赁客户的不同数量与客户总数相匹配的车牌。我在这里假设 ID
是 Customers
表中的唯一列。
关于mysql - SQL除法运算符及其在Mysql中的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294924/