mysql - SQL,查找满足严格条件的订单,匹配项目,如果购买了其他项目则不匹配

标签 mysql sql

这个问题让我工作中的所有 IT 人员都感到困惑,所以想知道是否有人可以提供帮助。

我需要从订单表中提取只购买了特定产品类型的任何人,(如果他们订购了该产品类型和我不想知道你是谁的任何其他产品类型)

例如表格大致是

---------------------------------------------------------------------------------------
Order ID    |    item code      |      Name       |
----------------------------------------------------------------------------------------
1           |   ADA             | item 1
2           |   ADA             | item 1
2           |   GGG             | item 2
3           |   ADA             | item 1
----------------------------------------------------------------------------------------

所以我想找到只购买商品代码 ADA 的人的所有订单 ID,但如果他们购买了超过商品,那么这个查询的输出应该是订单 ID 1 和 3 并跳过订单 2,因为它有一个不同的项目。

如果有人能提供帮助,我将非常感激。

最佳答案

假设一个订单不能有多个具有相同 ItemCode 的记录,您可以使用:

SELECT * 
FROM Orders 
WHERE OrderID IN (
   SELECT OrderID 
   FROM Orders
   GROUP BY OrderID HAVING COUNT(*) = 1
)
AND ItemCode = 'ADA'

如果一个订单可能有多个具有相同 ItemCode 的记录,那么您必须将 SELECT * 更改为 SELECT DISTINCT * 然后是 COUNT(* )COUNT(DISTINCT ItemCode)

关于mysql - SQL,查找满足严格条件的订单,匹配项目,如果购买了其他项目则不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22356530/

相关文章:

非唯一列上的 SQL Server 聚集索引

mysql - 循环生成唯一的 url 友好路由

sql - 在postgres中按日期合并多个值组

mysql - vb6查询错误

php - mysql,使用 "where"中的条件

javascript - 使用 mySQL、Php 和 JS,我如何请求 dans 使用我数据库中的数据?

sql - 我们是否可以将查询作为 SQL Server 中的列列表传递给 PIVOT?

php - 跨客户端用户的用户身份验证

MYSQL TIMESTAMP 对比

java - SQL转义遵循什么规则?