首页 > 解决方案 > 如何使用 mysql 按产品 ID 对结果进行分组

问题描述

如何按其变体、variant_options 及其来自不同表的 sku 对表进行分组

我的查询是:

SELECT p.id AS pId, p.name AS pName,
v.name AS vName,
vo.name AS voName,
s.sku, s.price, s.qty
FROM products p
LEFT JOIN variants v ON v.product_id = p.id
LEFT JOIN variant_options vo ON vo.variant_id = v.id
LEFT JOIN skus s ON s.product_id = p.id

它像这样显示

table:
pId | pName   | vName | voName | sku  | price | qty

1   | adidas  | size  | 42     | AD42 | 100   | 10
1   | adidas  | size  | 43     | AD42 | 100   | 10
1   | adidas  | size  | 42     | AD43 | 100   | 10
1   | adidas  | size  | 43     | AD43 | 100   | 10

我希望我的桌子变成:

table:
pId | pName   | vName | voName | sku  | price | qty

1   | adidas  | size  | 42     | AD42 | 100   | 10
                      | 43     | AD43 | 100   | 10

标签: mysql

解决方案


为您想要的任何内容添加 GROUP BY。

SELECT p.id AS pId, p.name AS pName,
v.name AS vName,
vo.name AS voName,
s.sku, s.price, s.qty
FROM products p
LEFT JOIN variants v ON v.product_id = p.id
LEFT JOIN variant_options vo ON vo.variant_id = v.id
LEFT JOIN skus s ON s.product_id = p.id
GROUP BY v.name, vo.name, s.product_id

但有时您可能会选择仅对其中一个进行 GROUP BY 以减少粒度。例如:

GROUP BY s.product_id

推荐阅读