sql - 使用 EXCEPT 或 NOT EXISTS 查找所有租用的卡
问题描述
我的数据库是这样的
CUSTOMER (NAME,VAT,PHONE)
CAR(PLATENR,COLOUR)
RENTS(VAT,PLATENR, RENTDATE)
我要查找的是所有客户租用的所有黑色汽车(所有增值税号)。我想使用嵌套子查询和EXCEPT
or NOT EXISTS
。我已经使用了这个查询COUNT
。
SELECT rents.PlateNr
FROM Rents,Car
WHERE Car.colour='black' AND car.PlateNr=rents.PlateNr
GROUP BY rents.PlateNr
HAVING COUNT(DISTINCT VAT) = (SELECT COUNT(*) FROM Customer);
我正在尝试使用本指南http://www.inf.usi.ch/faculty/soule/teaching/2016-fall/db/division.pdf来获得我的结果,但我不知道查询是如何实现的我的情况。
解决方案
我正在寻找类似于我上面提供的关于除法的链接的答案。
经过一番搜索并尝试使用 except 的最终除法查询是这样的:
SELECT PlateNr
FROM Car
WHERE colour='black'
EXCEPT
SELECT PlateNr
FROM (SELECT car.PlateNr, rents.VAT
FROM car,rents
EXCEPT
SELECT PlateNr,VAT
FROM rents)
已经在支持 EXCEPT 的 POSTGRE 中尝试过,一切都像魅力一样。
推荐阅读
- node.js - 使用 node.js fetch 调用的 API 的行为与使用浏览器不同
- java - 使用 Spring Boot,如何在新表上创建 2 个实体之间的关系并为其提供额外的列?
- python - Django - 即使尝试登录非管理页面,也会自动登录管理页面
- pentaho - 如何从 csv 文件中删除第一行?
- php - 获取街道列表以创建房屋
- python - 无法解析 AWS Lambda 上的主机名
- c++ - 读取输入文件并将它们存储在 C++ 中的 STL 向量中
- python - 为什么不使用 Apache 在我的 Python CGI 脚本中发送电子邮件?
- r - R中的元积分器
- c++ - 在 C++ 中抽象出嵌套循环