将产品分组到一个单元格中 - Mysql

Group products into one cell - Mysql

我有这个 table 订单 :

+-----+--------------+
| id_order | products| 
+----------+---------+
|  1  |    product 1  | 
+-----+--------------+
|  1  |    product 49| 
+-----+--------------+
|  1  |    product 12| 
+-----+--------------+
|  2  |    Product 1 | 
+-----+--------------+
|  3  |    Product 50| 
+-----+--------------+
|  4  |    Product 42| 
+-----+--------------+

在我的 SQL 查询中,我想像这样对产品进行分组:

 +-----+-------------------------------------+
| id_order | products                        | 
+----------+---------------------------------+
|  1  |    product 1, product 49, product 12  | 
+-----+--------------------------------------+
|  2  |    Product 1                         | 
+-----+--------------------------------------+
|  3  |    Product 50                        | 
+-----+--------------------------------------+
|  4  |    Product 42                        | 
+-----+--------------------------------------+

如何将这些产品重新组合到一个单元格中?使用 GROUP_CONCAT ?

感谢您的帮助!

如果您的数据库可用,您可以尝试使用 STRING_AGG() 分组函数。

在这里查看:[

这里我使用的是GROUP_CONCAT,这是Mysql中的内置方法,这只适用于Mysql服务器。

-- create
CREATE TABLE Products (
  Id INTEGER,
  product TEXT NOT NULL
);

-- insert
INSERT INTO Products VALUES (1, 'Product 1');
INSERT INTO Products VALUES (1, 'Product 2');
INSERT INTO Products VALUES (1, 'Product 3');
INSERT INTO Products VALUES (2, 'Product 9');
INSERT INTO Products VALUES (3, 'Product 10');

-- fetch 
SELECT Id, GROUP_CONCAT(product) FROM Products GROUP BY Id

输出:

1|Product 1,Product 2,Product 3
2|Product 9
3|Product 10