如何在 MYSQL 上合并来自 GROUP_CONCAT 的相同结果

how to merge the same result from GROUP_CONCAT on MYSQL

现在我在 mysql 上使用 GROUP_CONCAT 做一些查询。例如

我有table“sales_orders”

+----------+----------+------------+
| order_id | quantity | product_id |
+----------+----------+------------+
| 1        | 1        |         101|
| 1        | 1        |         102|
| 2        | 1        |         103|
| 2        | 1        |         104|
| 3        | 1        |         101|
| 3        | 1        |         102|
+--------+------------+------------+

我的查询是这样的

SELECT order_id, count(quantity) AS qty, GROUP_CONCAT(DISTINCT product_id ORDER BY product_id ASC ) AS product_id FROM sales_orders GROUP BY order_id

和这样的输出

+----------+-----+------------+
| order_id | qty | product_id |
+----------+-----+------------+
|         1|    2|101,102     |
|         2|    2|103,104     |
|         3|    2|101,102     |
+----------+-----+------------+

如果我们看到,product_id 与 101,102 的结果相同。我如何设法将相同的结果与数量合并成这样。

+-----+------------+
| qty | product_id |
+-----+------------+
|    4|101,102     |
|    2|103,104     | 
+-----+------------+

也许order_id对我来说显示不重要。请帮忙

我的第一个观察是数量有时可能超过 1。因此我建议使用总和而不是计数来表示数量

下一个查询使用子查询。

SELECT sum(qty) AS 数量, product_id FROM (SELECT order_id, sum(quantity) AS qty, GROUP_CONCAT(DISTINCT product_id ORDER BY product_id ASC ) AS product_id FROM sales_orders 分组 order_id) 作为 derived_table 分组依据 product_id