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

Sakila数据库SQL查询:找出参演全部16类影片的演员

解决Sakila数据库查找参演全类别演员的问题

不需要编写FUNCTION或PROCEDURE,用普通SQL查询就能实现需求。核心思路是统计每个演员参演的不同影片类别数量,筛选出数量等于总类别数(16个)的演员即可。

完整查询语句

SELECT a.actor_id, a.first_name, a.last_name
FROM actor a
INNER JOIN film_actor fa ON fa.actor_id = a.actor_id
INNER JOIN film_category fc ON fc.film_id = fa.film_id
GROUP BY a.actor_id, a.first_name, a.last_name
HAVING COUNT(DISTINCT fc.category_id) = 16;

关键步骤解释

  • 分组:按actor_id(及姓名,因actor_id唯一可确保姓名唯一)分组,聚焦单个演员的所有参演记录。
  • 去重统计类别数:用COUNT(DISTINCT fc.category_id)统计演员参演的不同类别数量——避免同一演员因参演同类别多部电影导致重复计数。
  • 筛选全类别演员:通过HAVING子句过滤出类别数等于16的演员,确保他们覆盖了所有影片类别。

可选优化(动态获取总类别数)

如果不确定类别总数,可通过子查询动态获取,避免硬编码数字:

SELECT a.actor_id, a.first_name, a.last_name
FROM actor a
INNER JOIN film_actor fa ON fa.actor_id = a.actor_id
INNER JOIN film_category fc ON fc.film_id = fa.film_id
GROUP BY a.actor_id, a.first_name, a.last_name
HAVING COUNT(DISTINCT fc.category_id) = (SELECT COUNT(*) FROM category);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:40:28