如何在MYSQL中存在空值的GROUP

如何在MYSQL中存在空值的GROUP

我有一个长查询,返回一个主键的多个值(从LEFT联接中)。
例如:(仅显示两个字段,但大约有10个字段)

LotID    Size
1         A
1         B
1         C
2         null
3         B
4         A
4         B


当我使用GROUP_CONACT时,它返回如下:

LotID       Size
1           A,B,C
3           B
4           A,B


但是我真正想要的是:

LotID       Size
1           A,B,C
2           null
3           B
4           A,B


我尝试使用

GROUP_CONCAT(CONCAT_WS(',', IFNULL(Size,''))) AS Sizes,


它返回:

    LotID       Sizes
    1           A,B,C,,,
    3           B,,
    4           A,B,,


它不返回LotID = 2,也不返回附加逗号。

我怎样才能得到干净的记录?

最佳答案

您必须对group_concat做错了,因为:

select
  lotid,
  group_concat(size) size
from tablename
group by lotid


返回:

| lotid | size               |
| ----- | ------------------ |
| 1     | A,B,C              |
| 2     | null               |
| 3     | B                  |
| 4     | A,B                |


请参见demo

关于mysql - 如何在MYSQL中存在空值的GROUP_CONCAT?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55442539/

10-12 07:15