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

SQL查询动作类最短时长影片无返回结果问题排查

问题排查及解决方案

核心问题排查点

  • 字符串大小写匹配错误:你插入的category表中动作分类的name值为Action(首字母大写),但查询条件中写的是全大写'ACTION',Oracle数据库的varchar2类型字符串比较默认区分大小写,这是导致查询无返回的直接原因。
  • 业务逻辑不符合需求:你当前的SQL按title分组,会返回所有Action分类影片的各自时长(单条影片的最小时长就是自身时长),无法筛选出最短时长的影片。
  • 连接逻辑冗余:此处仅需筛选有关联关系的分类、影片关联记录,使用内连接即可,不需要右连接。

修复后的查询语句

通用兼容写法(适用于所有Oracle版本)

先计算Action分类的最短时长,再匹配对应影片,可同时返回多部时长同为最小值的影片:

SELECT f.title, f.length
FROM film f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN category c ON fc.category_id = c.category_id
WHERE c.name = 'Action'
AND f.length = (
    SELECT MIN(f2.length)
    FROM film f2
    JOIN film_category fc2 ON f2.film_id = fc2.film_id
    JOIN category c2 ON fc2.category_id = c2.category_id
    WHERE c2.name = 'Action'
);

Oracle 12c+ 简化写法

SELECT f.title, f.length
FROM film f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN category c ON fc.category_id = c.category_id
WHERE c.name = 'Action'
ORDER BY f.length ASC
FETCH FIRST 1 ROWS WITH TIES;

说明:WITH TIES参数会返回所有时长等于最短值的影片,避免存在多部最短影片时漏查数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:18:00