[英]GROUP_CONCAT Question
因此,我尝试使用if语句在同一列的查询中执行多个GROUP_CONCAT()
。
即使有数据,也不能给我准确的信息。 我尝试增加了group_concat_max_len
,但是我仍然得到同样的错误数据。
这是一个例子:
SELECT
field1,
field2,
GROUP_CONCAT(DISTINCT IF(field3 = 2, field4, NULL)) list1,
GROUP_CONCAT(DISTINCT IF(field3 = 3, field4, NULL)) list2,
GROUP_CONCAT(DISTINCT IF(field3 = 4, field4, NULL)) list3
FROM table1
GROUP BY field5
尽管数据正确,但list1
, list2
和list3
中的结果并不准确。 我这样做是否遇到一些限制?
SELECT field1,field2,last1,list2,list3 FROM
(
SELECT
field1,
field2,
field5,
GROUP_CONCAT(DISTINCT IF(field3 = 2, field4, 'NULL')) list1,
GROUP_CONCAT(DISTINCT IF(field3 = 3, field4, 'NULL')) list2,
GROUP_CONCAT(DISTINCT IF(field3 = 4, field4, 'NULL')) list3
FROM
table1
GROUP BY
field1,field2,field5
) A;
我更改了SELECT列表,更改了GROUP BY,将NULL更改为'NULL',将整个查询放在一个子查询中,然后从子查询中取出了除field5以外的所有内容。 请查看是否会产生所需的结果。
如果您希望此查询快速运行,请添加以下索引:
ALTER TABLE table1 ADD INDEX (field1,field2,field5);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.