如何在同一OrderDetails中选择两个产品

时间:2016-03-03 19:38:48

标签: sql sql-server sql-server-2012

如何在OrderDetails

中选择包含两种商品的订单

例如,如果我有4个订单:

order id: 11000 contains: p1, p3, p5, p9
order id: 12000 contains: p1, p4, p5, p8
order id: 13000 contains: p2, p3, p5, p7
order id: 14000 contains: p1, p3, p5, p8
order id: 15000 contains: p2, p3, p6, p9

我想选择包含p1和p9

的订单ID

预期结果:11000,12000,14000

如何在SQL Server中执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

SELECT id
FROM OrderDetails
WHERE Product IN ('p1','p9')
GROUP BY id
HAVING COUNT(DISTINCT Product) = 2

获取满足条件集的OrderDetails PK值。

修改

要获取PK值的计数,可以将上述查询包装在子查询和COUNT中:

SELECT COUNT(*)
FROM (
  SELECT id
  FROM OrderDetails
  WHERE Product IN ('p1','p9')
  GROUP BY id
  HAVING COUNT(DISTINCT Product) = 2) AS t