分组重复记录时的MySQL查询

时间:2013-04-01 16:54:43

标签: mysql database

我正在尝试编写一个查询,该查询将找到所有我们的sku,其中包含下拉和样本的混合选项。

我们有一个存储此信息的表,但设置有点奇怪。对我很重要的专栏是。

-------------------------------------------
sku | option_flag | swatch_flag | sequence
-------------------------------------------

sku可能有多个重复记录,因为其他列会根据sku的设置方式而改变。

我的预期结果将如下所示。

-------------------------------------------
 sku  | option_flag | swatch_flag | sequence
-------------------------------------------
aa001 |      YES    |    NO       |     1
-------------------------------------------
aa001 |      YES    |    YES      |     2
-------------------------------------------
aa001 |      YES    |    NO       |     3
-------------------------------------------

到目前为止,我已经拥有了它,并且它正在通过sku进行分组,但它仍然包含for_flag。也许有一种方法可以要求按顺序排序1 2 3 - 1 2 3等。

SELECT a.*
FROM sku_parent_attributes AS a
INNER JOIN
    (SELECT sku
    FROM sku_parent_attributes
    WHERE option_flag = 'yes'
    GROUP BY sku
    HAVING COUNT(sku) = 3) AS b
ON a.sku = b.sku;

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT a.*,b.sku
FROM sku_parent_attributes AS a
INNER JOIN
sku_parent_attributes as b
ON a.sku = b.sku
GROUP BY b.sku
HAVING COUNT(b.sku) = 3

完整查询中的where条件,而不仅仅是子查询内部。