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

CS50 Pset7 Movies任务:如何从SQL查询结果中移除Kevin Bacon

解决CS50 Pset7 Movies中排除Kevin Bacon本人的问题

我正好做过这个任务,给你整理下修正后的查询和关键修改点:

SELECT DISTINCT people.name 
FROM people 
INNER JOIN stars ON stars.person_id = people.id 
INNER JOIN movies ON movies.id = stars.movie_id 
WHERE movies.id IN (
    SELECT DISTINCT movies.id 
    FROM movies 
    INNER JOIN stars ON stars.movie_id = movies.id 
    INNER JOIN people ON people.id = stars.person_id 
    WHERE people.name = "Kevin Bacon" AND people.birth = "1958"
)
AND people.name != "Kevin Bacon";

两个关键修改的原因:

  • 添加AND people.name != "Kevin Bacon":这是最直接的过滤方式,在主查询的WHERE子句末尾加上这个条件,就能直接把Kevin Bacon本人从结果中排除,比用NOT IN嵌套更简洁高效。
  • 子查询中用movies.id代替movies.title:电影标题可能存在重名的情况(比如不同年份的同名电影),用唯一的电影ID来匹配,能确保我们只筛选出1958年出生的Kevin Bacon真正参演过的电影,避免错误匹配到其他同名电影,让结果更精准。

之前你尝试用NOT IN没适配好嵌套结构,其实没必要绕那个弯,直接在主查询里加排除条件就搞定啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:42:52