【问题标题】:MySQL GROUP_CONCAT multiple fieldsMySQL GROUP_CONCAT 多个字段
【发布时间】:2012-09-28 16:58:26
【问题描述】:

我可能有一个无脑的时刻。

我想使用 GROUP_CONCAT 从我的数据库中的两个字段返回一系列数字。到目前为止,我已经使用以下方法完成了此操作:

SELECT t_id,
CONCAT(GROUP_CONCAT(DISTINCT s_id),',',IFNULL(GROUP_CONCAT(DISTINCT i_id),'')) AS all_ids
FROM mytable GROUP BY t_id

这很好用,但如果 i_id 为 NULL,那么我当然会得到一个不必要的逗号。有没有更好的方法来做到这一点,所以如果 i_id 为 NULL,我最后不会以逗号结尾?

【问题讨论】:

    标签: mysql concat group-concat


    【解决方案1】:

    您需要使用CONCAT_WS 来避免额外的comma 用于NULL 值,试试这个:

    SELECT t_id,
           CONCAT_WS(',', GROUP_CONCAT(DISTINCT s_id),
                     GROUP_CONCAT(DISTINCT i_id)) AS all_ids
    FROM mytable
    GROUP BY t_id;
    

    【讨论】:

    • 这将用单个逗号 (,) 替换任何双逗号 (,,) 但这不是我的问题。如果 i_id 为空,我最终得到的结果是 2,6,8,而我需要的是 2,6,8
    • 问题在于,如果 2 个字段(s_id 和 i_id)之间存在重复,则每个单独字段上的 distinct 将无济于事
    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2019-04-28
    • 2015-04-05
    • 2014-08-26
    • 2017-12-19
    相关资源
    最近更新 更多