You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询指定导演电影评分均值时重复获取数据,SQL语句问题求助

问题分析与解决

你的SQL语句里多余关联了users表,而且WHERE子句里的ratings.user_id = users.id是重复的JOIN条件,这会引发不必要的笛卡尔积,最终导致评分重复输出。

修正后的SQL语句

你只需要关联ratings和movies表就能获取指定导演的电影评分,完全不需要引入users表:

SELECT rating 
FROM ratings 
JOIN movies ON ratings.movie_name = movies.name 
WHERE movies.director = :name

重复输出的原因

当你额外关联users表时,如果users表中存在与该user_id匹配的多条记录,或者movies表中同一电影名对应多条同导演记录,JOIN操作会将ratings里的每条评分与匹配到的记录进行组合,导致同一评分被多次输出。比如《低俗小说》若在movies表中有3条同名同导演的记录,每条评分就会被关联3次,最终输出3倍的重复数据。

如果你的目标是计算评分均值,直接用聚合函数更高效,无需先查询所有评分再手动计算:

SELECT AVG(rating) AS average_rating
FROM ratings 
JOIN movies ON ratings.movie_name = movies.name 
WHERE movies.director = :name

内容的提问来源于stack exchange,提问作者MackDealer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:25:20