【发布时间】:2015-06-02 05:21:25
【问题描述】:
我有一个名为 OrderItems 的表。我想编写一个查询,返回数量 = 1 的行,但是如果有任何其他记录具有相同的 OrderID,我不希望返回任何内容。
Id OrderID Qty SKU
1 123 1 abc123
2 124 2 sho221
3 125 1 toy903
4 125 3 ball05
5 155 1 gree32
使用上面的示例数据,我希望仅返回订单 123 和 155,因为它们是针对数量为 1 的单个 SKU。订单 125 有两个 SKU,即使第一个 (Id 3) 的数量为 1 ,另一个(Id 4)的数量为 3,所以我不希望返回这些订单。
到目前为止我正在使用的查询是:
SELECT o.Id
FROM Orders o
INNER JOIN OrderItems oi
ON oi.OrderId = o.Id
WHERE oi.Quantity = 1
GROUP BY eo.Id
但此查询不考虑具有多个 SKU 的订单,只考虑恰好具有数量为 1 的 SKU 的订单。
简而言之 - 我想查找仅包含一个 SKU 的订单,并且其中的数量必须为一个。
【问题讨论】:
-
查询具有“oi.OrderId = o.Id”,但示例显示具有不同 Id 与 OrderId 的行
-
Id 只是 Identity 列,与 o.Id 列根本无关。对不起,如果这令人困惑。我只是想表明每一行都是独一无二的。
标签: sql sql-server