sql - SQL - 如何提取满足特定条件的行
问题描述
我将描述我的问题,并向您展示我为解决它而尝试做的事情。
我想从订单表中获取 productLine 包含这 3 个类别(老式汽车、经典汽车、摩托车)的所有订单的状态和 orderNumber
SELECT o.status, o.orderNumber
FROM orders o
WHERE EXISTS(
SELECT p.productLine
FROM products p
WHERE p.productLine IN ('Vintage Cars', 'Classic Cars', 'Motorcycles'))
上面的查询是我试图做的,但它每行都返回我。
我想我不明白如何检查 productLine 是否包括 Vintage Cars 和 Classic Cars and Motorcycles。谢谢!
解决方案
使用聚合:
select o.status, o.orderNumber
from orders o join
orderdetails od
on o.ordernumber = od.ordernumber join
products p
on od.productcode = p.productcode
where p.productLine in ('Vintage Cars', 'Classic Cars', 'Motorcycles')
group by o.status, o.orderNumber
having count(distinct p.productLine) = 3;
该having
子句检查所有三个产品线是否都存在于order
.
推荐阅读
- reactjs - 显示绝对页码
- c++ - 默认 Visual Studio C++ 控制台应用程序有 409 错误
- javascript - 从 API 获取数据并将字符串转换为数字
- python - 替换列数据框python中的数值
- vue.js - 将 Agora.io 与 nuxt.js 集成时出错 创建钩子时出错:“ReferenceError: AgoraRTC is not defined”
- javascript - 如何以 3 个不同的百分比为剑道甘特图任务的背景着色
- php - PHP中的严格类型会影响变量吗?
- apache-spark - 从没有链接的 .yml 创建 conda 环境
- php - 在 foreach 循环中取消设置特定节点
- python - 尝试使用此代码从 MySQL 表中获取多条记录,但树视图中仅显示最后一条记录