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

如何用SQL查询Sakila数据库inventory表对应行数最少的电影标题

问题原因

你的现有代码存在两个核心错误:

  1. WHERE子句仅返回了最小计数的数值,没有写比较逻辑,等价于WHERE [最小计数值],只要该数值不为0就会匹配所有JOIN后的结果,相当于没有筛选条件,完全达不到筛选库存最少电影的效果
  2. 直接JOIN film和inventory表会返回和库存条目数等量的重复电影标题,没有先按电影维度做聚合去重

正确SQL代码

SELECT f.title
FROM film f
-- 先关联按film_id聚合的库存计数结果,单部电影仅对应一行,避免重复
INNER JOIN (
    SELECT film_id, COUNT(film_id) AS inventory_count
    FROM inventory
    GROUP BY film_id
) AS film_inventory ON f.film_id = film_inventory.film_id
-- 匹配库存计数等于最小值的电影
WHERE film_inventory.inventory_count = (
    SELECT MIN(count_film_id)
    FROM (
        SELECT COUNT(film_id) AS count_film_id
        FROM inventory
        GROUP BY film_id
    ) AS temp_table
);

逻辑说明

  • 最内层子查询沿用题目给出的参考逻辑,计算所有电影的库存数量最小值
  • 中间层子查询先对inventory表按film_id分组,算出每部电影的总库存数,每部电影仅返回一行结果,和film表JOIN时不会产生重复标题
  • 最终WHERE条件将每部电影的库存数和最小值做相等匹配,即可返回所有库存最少的唯一电影标题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:18:01