MariaDB GROUP_CONCAT 只返回一个值

Posted

技术标签:

【中文标题】MariaDB GROUP_CONCAT 只返回一个值【英文标题】:MariaDB GROUP_CONCAT only returns one value 【发布时间】:2014-10-18 00:22:53 【问题描述】:

我的实例中的 GROUP_CONCAT 函数遇到了一个奇怪的问题,使用它来将整数组合在一起工作得很好,但是将它应用于 varchar 根本不起作用。

数据大致如下:

CUSTOMERID  LOCATIONNAME    PRODUCTID   UNITS   ID  PRODUCTNAME
1           Location            65       100    1   Product 65
1           Location            66       100    2   Product 66
1           Location            67       100    3   Product 67
1           Location            68       100    4   Product 68
1           Location            68       100    5   Product 68

当我跑步时:SELECT GROUP_CONCAT(DISTINCT lm.ProductID) as Brand FROM locationMap lm WHERE (lm.CustomerID = 1);

它返回 65、66、67、68 并正常工作。

当我跑步时:SELECT GROUP_CONCAT(DISTINCT lm.ProductName) as Brand FROM locationMap lm WHERE (lm.CustomerID = 1);

它只返回第一项(产品 65)。

我设置了一个 SQL Fiddle (http://www.sqlfiddle.com/#!2/2392f/3) 来测试它,并且在那里一切正常。任何人都可以就我的环境中可能导致这种情况的问题提出建议吗?我正在运行 5.5.30-MariaDB-30.1

【问题讨论】:

在fiddle 中显示 4 个产品名称? ProductName 看起来像是对该数据的非规范化。希望这不是真实数据。 这只是虚拟数据。一切都在小提琴中正常工作,但在实际环境中它只在 ProductName 示例中返回一个结果。 @dwilkinson 当你在你的机器上运行show variables like '%group_concat_max_len%' 你在值列中看到什么值? 您能下载mysql 5.5.30 看看MariaDB 和MySQL 是否存在同样的问题吗?如果您的查询适用于 MySQL 5.5.30,请告知 MariaDB 团队。在 MariaDB 上,创建一个类似于 SQL Fiddle 中的测试表,看看您的问题是否可重复(只是为了交叉检查数据) 【参考方案1】:

已验证将服务器从 5.5.30-MariaDB-30.1 升级到 5.5.38-MariaDB-35.2 已解决此问题。感谢大家的建议。

【讨论】:

以上是关于MariaDB GROUP_CONCAT 只返回一个值的主要内容,如果未能解决你的问题,请参考以下文章

SQL将的同一个分组中的值连接起来,返回一个字符串结果 使用group_concat()

使用 php 返回 GROUP_CONCAT('column x') 值

踩坑记录Mysql查询使用group_concat函数后,如果查询无结果,仍会返回一条空数据

踩坑记录Mysql查询使用group_concat函数后,如果查询无结果,仍会返回一条空数据

踩坑记录Mysql查询使用group_concat函数后,如果查询无结果,仍会返回一条空数据

如果任何值为 NULL,GROUP_CONCAT 返回 NULL