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函数后,如果查询无结果,仍会返回一条空数据