如何在 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
现在我在 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