如何使用JOIN命令(与Distinct相关)使用SQL查询获取所有记录

时间:2017-07-05 05:04:39

标签: mysql

这是我的SQL查询

SELECT tmdb_movies.movie_title
,GROUP_CONCAT(DISTINCT recommendations.recommendations_vote_average) as recommendations_vote_average

FROM tmdb_movies 

LEFT JOIN recommendations ON recommendations.recommendations_tmdb_id=tmdb_movies.tmdb_id

Where tmdb_movies.tmdb_id=155

GROUP BY tmdb_movies.movie_title

这就是我的推荐能力:enter image description here

所以,现在,GROUP_CONCAT(DISTINCT recommendations.recommendations_vote_average) as recommendations_vote_average 如果我在这里使用DISTINCT,那么就不会显示以下电影的vote_average:The Matrix, Inception, Iron Man 2, Captain America: The First Avenger。 +它显示所有电影的错误vote_average(先离开)

如果我不使用Distinct,则在所有记录中显示7.5。

如何解决这个问题?如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

如果您需要平均建议,可以使用AVG聚合函数:

SELECT tmdb_movies.movie_title
,AVG( recommendations.recommendations_vote_average) as recommendations_vote_average
FROM tmdb_movies 
LEFT JOIN recommendations ON recommendations.recommendations_tmdb_id=tmdb_movies.tmdb_id
Where tmdb_movies.tmdb_id=155
GROUP BY tmdb_movies.movie_title

答案 1 :(得分:0)

试试这个:

        SELECT tmdb_movies.movie_title,
        GROUP_CONCAT(recommendations.recommendations_vote_average) 
         as recommendations_vote_average
        FROM tmdb_movies 
        LEFT JOIN (select * from recommendations group by recommendations_vote_average) 
        recommendations 
        ON recommendations.recommendations_tmdb_id=tmdb_movies.tmdb_id 
        Where tmdb_movies.tmdb_id=155
        GROUP BY tmdb_movies.movie_title