带有GROUP_CONCAT的INNER JOIN返回重复值

Azianese

如果尝试使用以下查询来查询数据库,则会得到预期的结果:

SELECT anime.anime, GROUP_CONCAT(themes.theme) AS themes
FROM anime
INNER JOIN anime_themes ON anime.id = anime_themes.anime_id
INNER JOIN themes ON themes.id = anime_themes.theme_id
GROUP BY anime.anime
ORDER BY anime.id;

示例输出: “健忘症,身体切换,自然灾害,悲剧”

但是,当我尝试使用以下查询一次查询更多数据时,会得到重复数据:

SELECT anime.*, directors.director, studios.studio, 
GROUP_CONCAT(genres.genre) AS genres, GROUP_CONCAT(themes.theme) AS themes
FROM anime
INNER JOIN anime_directors ON anime.id = anime_directors.anime_id
INNER JOIN directors ON directors.id = anime_directors.director_id
INNER JOIN anime_studios ON anime.id = anime_studios.anime_id
INNER JOIN studios ON studios.id = anime_studios.studio_id
INNER JOIN anime_genres ON anime.id = anime_genres.anime_id
INNER JOIN genres ON genres.id = anime_genres.genre_id
INNER JOIN anime_themes ON anime.id = anime_themes.anime_id
INNER JOIN themes ON themes.id = anime_themes.theme_id
GROUP BY anime.anime
ORDER BY anime.id;

示例输出:车身开关,自然灾害,悲剧,健忘症,人体开关,自然灾害,自然灾害,悲剧,健忘症,健忘症,人体开关,自然灾害,悲剧,悲剧,健忘症,人体开关“

在第二个查询中,数据似乎并没有以连贯的顺序重复。为什么两个查询之间的行为不同,如何解决这个问题?谢谢。

编辑:只有“主题”和“类型”具有重复的值,而“导演”和“工作室”则没有,因此我认为它与GROUP_CONCAT函数有关。

克里希纳(Krishna Jonnalagadda)

只需添加DISTINCT。

例:

    GROUP_CONCAT(DISTINCT genres.genre) AS genres, GROUP_CONCAT(DISTINCT 
 themes.theme) AS themes

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章