5

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

我想使用 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,我最后不会以逗号结尾?

4

1 回答 1

14

您需要使用CONCAT_WS来避免额外commaNULL值,试试这个:

SELECT t_id,
       CONCAT_WS(',', GROUP_CONCAT(DISTINCT s_id),
                 GROUP_CONCAT(DISTINCT i_id)) AS all_ids
FROM mytable
GROUP BY t_id;
于 2012-10-08T12:32:27.010 回答