因此,我尝试在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
,但结果并不准确。我这样做会遇到一些限制吗?
答案 0 :(得分:1)
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);