所以假设我有一个这样的表,叫做动物,动物有点值:
id dogs cats birds lions
1 0 1 0 0
2 1 1 0 0
3 0 1 0 1
4 0 0 0 1
我想将位值为1的动物分组在一起
所需输出:
cats
dogs,cats
cats,lions
lions
我想使用GROUP_CONCAT
将它们组合在一起,但不知道如何只选择真正的。这只是个想法。
发布于 2019-04-11 07:50:40
GROUP_CONCAT()
对此没有用处,它用于连接组中的行之间的列,而不是连接同一行中的列。
您可以使用CONCAT_WS()
连接同一行中的值,并使用给定的分隔符(本例中为','
)。它只连接非空值,所以您希望用列名替换TRUE值,用NULL
替换false值。
SELECT CONCAT_WS(',',
IF(dogs, 'dogs', NULL),
IF(cats, 'cats', NULL),
IF(birds, 'birds', NULL),
IF(lions, 'lions', NULL)) AS animals
FROM yourtable
https://stackoverflow.com/questions/55622759
复制相似问题