【问题标题】:how to merge the same result from GROUP_CONCAT on MYSQL如何在 MYSQL 中合并来自 GROUP_CONCAT 的相同结果
【发布时间】:2021-10-04 15:49:09
【问题描述】:

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

我有表“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 对我来说并不重要。请帮忙

【问题讨论】:

    标签: mysql group-concat


    【解决方案1】:

    我的第一个观察是数量有时可能超过 1。因此我建议使用 sum 而不是 count 作为数量

    使用子查询的下一个查询。

    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 GROUP BY order_id) as derived_table GROUP BY product_id

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多