GROUP_CONCAT问题

时间:2011-09-28 18:05:00

标签: mysql

因此,我尝试在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

虽然数据是list1list2list3,但结果并不准确。我这样做会遇到一些限制吗?

1 个答案:

答案 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);