sql - 查询以从另一个表中查找某些产品组
问题描述
我正在寻找一个查询,我需要显示供应商表中没有类别 1 的产品(Products.CategoryID = 1)但确实有类别 4 的产品(Products.CategoryID = 4)的所有供应商。以下是我所拥有的,但仅显示不是第 1 类的产品。我不知道如何包含第 6 类的产品
感谢您考虑这个问题的答案。
select su.SupplierID, su.CompanyName
From Suppliers as su
where not exists
(select null
from Products as pr
where su.SupplierID = pr.SupplierID
and p.CategoryID = 1)
解决方案
我需要显示供应商表中没有第 1 类产品(Products.CategoryID = 1)但有第 4 类产品(Products.CategoryID = 4)的所有供应商。
您可以使用聚合:
select p.supplierID
from products p
where p.categoryID in (1, 4)
group by p.supplierID
having min(p.categoryID) = max(p.categoryID) and
min(p.categoryID) = 4;
如果您想引入有关供应商的其他信息(除了supplierID
),您可以使用JOIN
、EXISTS
或IN
。
推荐阅读
- android - 单击 Recaptcha 后强制关闭
- ios - EKEventEditViewController 不会关闭
- 64-bit - 如何将 z/OS 转储到标准内存以进行调试
- java - 如何借助 wms .jar 文件在 android studio 中实现 wms 层
- python - 在 Python 中使用带有自定义语句的 Class
- oracle - Oracle TimesTen 随机字符串
- winapi - 如何使用 ShellExecuteEx 避免内存泄漏?
- python - 将条件语句的输出写入嵌套循环python中的文件
- python - 从 CSV 文件读取时间时,表示日期时间的字符串的秒部分被丢弃
- android - 成功构建 gradle 后,Android 应用程序在运行时崩溃