如何在单个字段或列中连接多个值? (MySQL)

Posted

技术标签:

【中文标题】如何在单个字段或列中连接多个值? (MySQL)【英文标题】:How can I concatenate multiple values in a single field or column? (MySQL) 【发布时间】:2014-10-13 10:53:35 【问题描述】:

我在 mysql 中有一个需要分组的表。我正在检索订购了多个商品的销售订单

我当前的数据库查询如下所示:

如您所见,销售订单 255 购买了 2 件商品,而销售订单 300 购买了 3 件商品

问题:我需要在 line_items 字段或根据 order_id 的列中连接所有 product_id 及其价格

我想要的输出是这样的:

这是我使用的查询:

SELECT bsb.ORDER_ID AS order_id, bsb.PRODUCT_ID AS product_id, bsb.PRICE AS   product_price, '' AS line_items
FROM bsb
INNER JOIN bso ON bso.ID = bsb. ORDER_ID
WHERE bsb.ORDER_ID in(255, 300)

请帮帮我...

【问题讨论】:

【参考方案1】:

您可以在GROUP_CONCAT 中使用CONCAT 来获得所需的结果集,但请记住GROUP_CONCAT 的默认连接字符数为1024 个,但可以按照GROUP_CONCAT 手册增加它

SELECT bsb.ORDER_ID AS order_id, 
GROUP_CONCAT(CONCAT('product_id: ',bsb.PRODUCT_ID,' | ',bsb.PRICE) SEPARATOR ';') AS line_items
FROM bsb
INNER JOIN bso ON bso.ID = bsb. ORDER_ID
WHERE bsb.ORDER_ID in(255, 300)
GROUP BY bsb.ORDER_ID 

【讨论】:

嗨哈立德,感谢您的回复。你的答案是正确的。你真棒! :)

以上是关于如何在单个字段或列中连接多个值? (MySQL)的主要内容,如果未能解决你的问题,请参考以下文章

如何为单个列中存在的值添加多个条件并将结果显示在单独的列中?

如何在 LINQ 中对单个连接中的多个字段进行连接

在 MySQL 中的表的多个列中查找连接的字符串

php如何统计mysql数据库列中有逗号隔开的字段内多个值的个数

如何在postgresql的列中针对单个记录选择多个值[重复]

如何为 MySQL 中的字段或列设置别名?