Create New Column Based on value of multiple other columns (MySQL)

问题描述 投票:0回答:1

我正在尝试根据图像链接中显示的列的值在 MySQL 中创建一个新列。我想这样做,只要列的值为 1,它就会将列名添加到新列中。因此,例如,如果列“genre_drama”和“genre_comedy”的值为 1,我希望新列类似于“genre_drama,genre_comedy”。无法解决这个问题,我们将不胜感激!

columns

mysql
1个回答
0
投票

使用

CONCAT_WS()
函数,以逗号作为分隔符。接下来的每个参数的值应该是列名或空值,具体取决于该列的值是否为
1
。空值不会包含在结果中。

SELECT CONCAT_WS(', ', 
                IF(genre_drama = 1, 'genre_drama', NULL),
                IF(genre_comedy = 1, 'genre_comedy', NULL),
                IF(genre_adventure = 1, 'genre_adventure', NULL),
                ...) AS genres
FROM yourTable

如果您不想全部输入,您可以使用

INFORMATION_SCHEMA.COLUMNS
动态构建查询。

© www.soinside.com 2019 - 2024. All rights reserved.