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

PostgreSQL多表关联:如何正确筛选核心演员无对应角色记录

关联错配的核心原因

原查询在做LEFT JOIN plays关联时,仅以person_id作为匹配条件,没有同步匹配影片维度,会将演员在所有其他影片的饰演角色记录,全部错误关联到他作为核心成员参与的每一部影片上,最终产生跨影片的角色错配,导致筛选结果失准。

修正方案

核心修正逻辑:关联plays表时,必须同时匹配两个关联维度,确保关联的角色记录严格属于「当前影片+当前演员」的对应关系,从根源上避免跨影片错配:

  • 关联同一名演员的ID(person_id)
  • 匹配同一部影片的ID(movie_id)

修正后的可执行SQL语句:

SELECT 
  people.name AS actor, 
  movies.title AS movie,
  plays."character"
FROM principals
INNER JOIN people 
  ON principals.person_id = people.id
INNER JOIN movies 
  ON principals.movie_id = movies.id
LEFT OUTER JOIN plays 
  ON principals.person_id = plays.person_id 
  AND principals.movie_id = plays.movie_id
WHERE 
  principals.role = 'actor' 
  AND plays."character" IS NULL;

该查询的输出结果完全匹配筛选要求:精准返回在对应影片中被记录为核心演员(role为actor),但未在该影片下关联对应饰演角色记录的人员与影片信息。

内容的提问来源于stack exchange,提问作者SQL Learner 1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 22:15:03