更改列值取决于出现次数

时间:2019-01-19 21:08:09

标签: mysql sql

有桌子:

NAME   GENRE
book1  genre1
book2  genre2
book3  genre1
book3  genre2
book4  genre1
etc

因此,我们可以有一本书,只包含一种或多种类型。 我想从该表中获得该表

NAME   GENRE
book1  genre1
book2  genre2
book3  mixed_genres
book4  genre1

因此,在新表格中,如果这本书只有一种流派,我们将保留此流派,如果这本书有很多流派,我们将通过“ mixed_genres”更改流派值。

有什么办法可以做到这一点? 非常感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

您可以使用聚合:

select book,
       (case when min(genre) = max(genre) then max(genre)
             else 'mixed genres'
        end) as genre
from t
group by book;

您还可以列出所有类型:

select book, group_concat(genre) as genre
from t
group by book;