mysql - SQL除法运算符及其在Mysql中的实现

标签 mysql

在数据库中,我有一些客户租用的汽车。我想找到所有客户租用的汽车,并显示他们的车牌号。换句话说,我想在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);

用简单的英语来说,这就是找到所有租赁客户的不同数量与客户总数相匹配的车牌。我在这里假设 IDCustomers 表中的唯一列。

关于mysql - SQL除法运算符及其在Mysql中的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294924/

相关文章:

php - 如何使用 php 和 mysql 获取下拉菜单中项目的详细信息

MySQL 更新重复错误

php - 根据行中的值更改 sprintf 值

mysql - 是否可以在没有备份的情况下从cpanel恢复数据库?

mysql - 如何缩小 MySQL 全文搜索结果的范围?

php - 在 PHP 中执行多个更新语句

mysql - MAX In WHERE 子句返回所有记录

javascript - 用户 "admin"登录时显示编辑按钮

mysql - 查询获取数据,按两列分组,并按Client ID在一行中显示多个相似行

MySQL GROUP BY 和 ORDER BY 的使用