这个问题让我工作中的所有 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/