繁体   English   中英

GROUP_CONCAT问题

[英]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

尽管数据正确,但list1list2list3中的结果并不准确。 我这样做是否遇到一些限制?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM