【发布时间】:2021-07-16 17:00:46
【问题描述】:
我有一个相当简单的架构,有类似的行
我要做的是按name 然后sku 对结果进行分组 - 仅在有重复项的地方。
例如,我的预期结果是
sku1 | Blue T-shirt
sku1 | Dark Blue T-shirt
sku2 | Red T-Shirt
sku2 | Reddish T-shirt
sku3 不会返回,因为它们都具有相同的名称。
我试过了
SELECT
sku,
name,
count(*)
FROM
order_items
GROUP BY
name,
sku
HAVING COUNT(*) > 1
但是,这省略了sku2
sku | name | count(*)
sku1 | Blue T-shirt | 3
sku2 | Green T-shirt | 3
count(*) 在这种情况下似乎在分组之前返回总行数。
我有一个关于这个的 SQL 小提琴
http://sqlfiddle.com/#!9/532d37/9
【问题讨论】:
-
是的,wgat 按两个值分组确实如此,在这方面是正确的
-
and count(*) > 1 表示您的预期结果必须存在 2 个或更多,另外只有一个存在
-
而你的 dbfiddle 中的 result6 显示 sk1 和 sku3 而不是 sku 2
-
@nbk 修复了有问题的错字,谢谢