我写的查询参演电影去重演员姓名的SQL语句是否正确?
SQL写法正误判断
结论
你编写的SQL语句不符合需求,写法错误。
错误原因
- 需求仅要求返回去重的演员姓名,你的语句
SELECT后同时携带了name和rolename两个字段,DISTINCT关键字会对「演员姓名+角色名」的组合值进行去重,而非仅对演员姓名去重。如果同一个演员饰演过多个不同角色,最终查询结果中该演员的姓名会重复出现,不满足要求。 - 额外说明:该需求无需关联
movie表即可实现,actor_role表中已经存储了所有参演过电影的演员AID,关联movie表属于多余操作,但不影响最终结果正确性。
正确写法示例
写法1(最简写法,无需关联movie表)
SELECT DISTINCT a.name FROM actor a INNER JOIN actor_role ar ON a.AID = ar.AID;
写法2(保留原关联逻辑,仅修正查询字段)
SELECT DISTINCT name FROM movie JOIN actor_role ON actor_role.MID = movie.MID JOIN actor ON actor_role.AID = actor.AID;
内容的提问来源于stack exchange,提问作者Cassie Hack
相关产品推荐
相关产品推荐

