MySQL如何将同订单的多个产品合并到同一单元格?
你完全可以使用GROUP_CONCAT函数完成该需求,以下是不同数据库环境下的实现方案:
MySQL / MariaDB 环境(原生支持GROUP_CONCAT)
直接执行以下SQL即可得到你要的输出结果:
SELECT id_order, GROUP_CONCAT(products SEPARATOR ', ') AS products FROM Orders GROUP BY id_order;
说明:GROUP_CONCAT默认分隔符为英文逗号,你需要的逗号加空格格式,通过SEPARATOR ', '指定即可。如果合并的内容长度超出默认限制,可以执行SET SESSION group_concat_max_len = 102400;临时调大长度阈值。
其他数据库环境的对应实现
如果使用的不是MySQL生态的数据库,可以用对应数据库的字符串拼接聚合函数实现相同效果:
- PostgreSQL / SQL Server:使用
STRING_AGG函数
SELECT id_order, STRING_AGG(products, ', ') AS products FROM Orders GROUP BY id_order;
- Oracle:使用
LISTAGG函数
SELECT id_order, LISTAGG(products, ', ') WITHIN GROUP (ORDER BY products) AS products FROM Orders GROUP BY id_order;
内容的提问来源于stack exchange,提问作者icodepixels
相关产品推荐
相关产品推荐

