Mysql 从分组结果中选择不同的值

Mysql 从分组结果中选择不同的值,mysql,group-concat,Mysql,Group Concat,我是一个对学习MySQL感兴趣的学习者,我正在建立一个电影网站。如果有人能帮我,我会非常感激的 所以我做了一个这样的查询 SELECT Movie.idMovie,MovieTitle,Description, group_concat(ActorName) AS ActorName,group_concat(DirectorName) FROM EAD_ASSIGNMENT.Movie INNER JOIN EAD_ASSIGNMENT.Movie_Actor ON EAD_ASSIGNME

我是一个对学习MySQL感兴趣的学习者,我正在建立一个电影网站。如果有人能帮我,我会非常感激的

所以我做了一个这样的查询

SELECT Movie.idMovie,MovieTitle,Description,
group_concat(ActorName) AS ActorName,group_concat(DirectorName)
FROM EAD_ASSIGNMENT.Movie 
INNER JOIN EAD_ASSIGNMENT.Movie_Actor
ON EAD_ASSIGNMENT.Movie.idMovie = EAD_ASSIGNMENT.Movie_Actor.idMovie
INNER JOIN EAD_ASSIGNMENT.Actor
ON EAD_ASSIGNMENT.Movie_Actor.idActor = EAD_ASSIGNMENT.Actor.idActor
INNER JOIN EAD_ASSIGNMENT.Movie_Director
ON EAD_ASSIGNMENT.Movie.idMovie = EAD_ASSIGNMENT.Movie_Director.idMovie
INNER JOIN EAD_ASSIGNMENT.Director
ON EAD_ASSIGNMENT.Movie_Director.idDirector =
EAD_ASSIGNMENT.Director.idDirector
WHERE Movie.idMovie = 1;
我得到的桌子看起来像这样

1 || Frozen || A magical movie || Idina Menzel,Kristen Bell || Jennifer Lee, Chris Buck
然后我查询了WHERE Movie.idMovie=2

令我震惊的是,我得到的是这个(问题是在最后一个单元)


所以问题是这个小组的工作不像我想象的那样。在本例中,对于第一个查询,它似乎很好,但对于第二个查询,它将1个值作为一个组,并将其与自身分组(猜测)?如果有多个结果之间有一个“,”,并且只有一个结果,那么我有什么方法可以对结果进行分组吗?

因此我意识到我可以通过包含一个独特的函数来修复它,该函数只在查询不同时才告诉查询分组。正确的查询是

SELECT Movie.idMovie,MovieTitle,Description,
group_concat(DISTINCT ActorName) AS ActorName,group_concat(DISTINCT DirectorName)
FROM EAD_ASSIGNMENT.Movie 
INNER JOIN EAD_ASSIGNMENT.Movie_Actor
ON EAD_ASSIGNMENT.Movie.idMovie = EAD_ASSIGNMENT.Movie_Actor.idMovie
INNER JOIN EAD_ASSIGNMENT.Actor
ON EAD_ASSIGNMENT.Movie_Actor.idActor = EAD_ASSIGNMENT.Actor.idActor
INNER JOIN EAD_ASSIGNMENT.Movie_Director
ON EAD_ASSIGNMENT.Movie.idMovie = EAD_ASSIGNMENT.Movie_Director.idMovie
INNER JOIN EAD_ASSIGNMENT.Director
ON EAD_ASSIGNMENT.Movie_Director.idDirector =
EAD_ASSIGNMENT.Director.idDirector
WHERE Movie.idMovie = 1;
如果有任何改进此查询的方法,请告诉我,这似乎对我现在有所帮助。:)

SELECT Movie.idMovie,MovieTitle,Description,
group_concat(DISTINCT ActorName) AS ActorName,group_concat(DISTINCT DirectorName)
FROM EAD_ASSIGNMENT.Movie 
INNER JOIN EAD_ASSIGNMENT.Movie_Actor
ON EAD_ASSIGNMENT.Movie.idMovie = EAD_ASSIGNMENT.Movie_Actor.idMovie
INNER JOIN EAD_ASSIGNMENT.Actor
ON EAD_ASSIGNMENT.Movie_Actor.idActor = EAD_ASSIGNMENT.Actor.idActor
INNER JOIN EAD_ASSIGNMENT.Movie_Director
ON EAD_ASSIGNMENT.Movie.idMovie = EAD_ASSIGNMENT.Movie_Director.idMovie
INNER JOIN EAD_ASSIGNMENT.Director
ON EAD_ASSIGNMENT.Movie_Director.idDirector =
EAD_ASSIGNMENT.Director.idDirector
WHERE Movie.idMovie = 1;