mysql - 如何使用 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
解决方案
为您想要的任何内容添加 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
推荐阅读
- html - SnipCart 2x 如何在取货时自动将库存数量添加到产品中?
- mysql - 根据具有多条记录的表中另一列的不同值添加值
- arrays - ArrayFormula 与多列的总和和乘法
- c - 我只想显示一个 printf 5 秒
- angular - 仅当填写了任何其他表单域时才需要表单域
- ios - NavigationLink 中的图像不呈现
- python - 我在尝试使用 python 在 linux 中复制文件时遇到问题(当我切换到 Windows 10 时,我也会遇到类似的不一致)
- c# - 哪个更有效 - Task.Run 有 2 个等待的 I/O 绑定任务,还是经典的 Fork/Join 方法?
- internet-explorer - 使用 VBS 在 IE 中单击动画/播放按钮
- sed - 替换换行符 (\n) 除了每行的最后一行