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

如何用SQLite查询所有参演人员均在世的电影名称?

解决方案

可以通过关联三张表,统计每部电影中去世演员的数量,筛选出数量为0的电影来实现需求。以下是包含INNER JOIN、CASE WHEN和SUM的SQL查询:

SELECT m.uniqueMovieId, m.movieName
FROM movies m
INNER JOIN cast c ON m.uniqueMovieId = c.uniqueMovieId
INNER JOIN personnel p ON c.castId = p.castId
GROUP BY m.uniqueMovieId, m.movieName
HAVING SUM(CASE WHEN p.yearOfDeath IS NOT NULL THEN 1 ELSE 0 END) = 0;

代码解释:

  • 表关联:用INNER JOIN依次关联movies、cast和personnel,确保只保留存在参演人员记录的电影。
  • 标记与统计:通过CASE WHEN将已去世(yearOfDeath不为空)的演员标记为1,未去世的标记为0,再用SUM汇总每部电影中去世演员的总数。
  • 结果过滤:HAVING子句筛选出去世演员总数为0的电影,即所有参演人员均未去世的目标电影。

补充场景处理:

如果需要包含无参演人员记录的电影(这类电影自然没有去世演员),可以将INNER JOIN替换为LEFT JOIN,同时保持过滤条件不变:

SELECT m.uniqueMovieId, m.movieName
FROM movies m
LEFT JOIN cast c ON m.uniqueMovieId = c.uniqueMovieId
LEFT JOIN personnel p ON c.castId = p.castId
GROUP BY m.uniqueMovieId, m.movieName
HAVING SUM(CASE WHEN p.yearOfDeath IS NOT NULL THEN 1 ELSE 0 END) = 0;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:15:44