Mysql 更改列值取决于出现次数

Mysql 更改列值取决于出现次数,mysql,sql,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 因此,在新表中如果书只有一种体裁,我们保留这种体裁,如果书有许多体裁,我们通过“混

下面是表格:

NAME   GENRE
book1  genre1
book2  genre2
book3  genre1
book3  genre2
book4  genre1
etc
因此,我们可以有一本只有一种或多种体裁的书。 我想从这张桌子上得到这张桌子

NAME   GENRE
book1  genre1
book2  genre2
book3  mixed_genres
book4  genre1
因此,在新表中如果书只有一种体裁,我们保留这种体裁,如果书有许多体裁,我们通过“混合体裁”改变体裁值

有没有办法做到这一点?
非常感谢你的建议

您可以使用聚合:

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;
试着理解“count(*)和“groupby”是如何工作的。这将是对你问题的回答。