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

SQL查询咨询:如何获取同时出演两部指定影片的演员

如何查询同时出演两部影片的演员

你第一条SQL里用WHERE F.title = 'RANDOM GO' AND F.title ='JASON TRAP'查不到结果,核心原因是单条记录里的电影标题只能是一个值,不可能同时等于两个不同的片名,这个条件永远匹配不到数据。

下面给你几个可行的解决方案:

方案1:分组统计(GROUP BY + HAVING)

先筛选出两部影片的参演记录,再按演员分组,统计每个演员出演目标影片的数量,只保留数量为2的演员(说明同时出演了两部)。

SELECT A.first_name, A.last_name
FROM actor AS A
JOIN film_actor AS Fa ON A.actor_id = Fa.actor_id
JOIN film AS F ON F.film_id = Fa.film_id 
WHERE F.title IN ('RANDOM GO', 'JASON TRAP')
GROUP BY A.actor_id, A.first_name, A.last_name
HAVING COUNT(DISTINCT F.film_id) = 2;

加DISTINCT是为了避免同一演员在同一部影片中有多条重复记录的情况,让统计更严谨。

方案2:多次JOIN关联

通过两次关联操作,分别匹配两部影片的参演记录,直接筛选出同时出现在两个关联结果里的演员。

SELECT A.first_name, A.last_name
FROM actor AS A
JOIN film_actor AS Fa1 ON A.actor_id = Fa1.actor_id
JOIN film AS F1 ON F1.film_id = Fa1.film_id AND F1.title = 'RANDOM GO'
JOIN film_actor AS Fa2 ON A.actor_id = Fa2.actor_id
JOIN film AS F2 ON F2.film_id = Fa2.film_id AND F2.title = 'JASON TRAP';

这种方式逻辑直白,每一步JOIN都限定了对应的影片,确保演员同时参演了两部。

方案3:子查询取交集

先分别查询出两部影片的演员ID集合,再筛选同时存在于两个集合中的演员信息。

SELECT first_name, last_name
FROM actor
WHERE actor_id IN (
    SELECT actor_id FROM film_actor
    JOIN film ON film.film_id = film_actor.film_id
    WHERE title = 'RANDOM GO'
)
AND actor_id IN (
    SELECT actor_id FROM film_actor
    JOIN film ON film.film_id = film_actor.film_id
    WHERE title = 'JASON TRAP'
);

内容的提问来源于stack exchange,提问作者Tuta.Tibetan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:35:22