因此,假设我有一个这样的表,称为动物,这些动物是该值的BIT:
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
将它们放在一起,但不知道如何只选择真实的。只是一个主意。
答案 0 :(得分:1)
GROUP_CONCAT()
对此没有用,它用于在组中的行之间连接一列,而不是在同一行内的列进行连接。
您可以使用CONCAT_WS()
在给定分隔符(在这种情况下为','
)中连接同一行中的值。它将只连接非空值,因此您想用列名替换真值,并用NULL
替换假值。
SELECT CONCAT_WS(',',
IF(dogs, 'dogs', NULL),
IF(cats, 'cats', NULL),
IF(birds, 'birds', NULL),
IF(lions, 'lions', NULL)) AS animals
FROM yourtable