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