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

获取最小行程时长的SQL语句报错,请求修正(含排序要求)

修复你的SQL查询:筛选最小行程时长记录

嘿,我来帮你捋捋这个SQL的问题~你的需求是找出行程时长最小的记录,展示指定字段并按schedule_id排序,但原语句有两个明显的问题:

  • 语法错误:主查询后面直接跟子查询,没有WHERE或JOIN这类关键字,数据库根本不知道怎么处理这个结构
  • 逻辑缺失:就算语法能过,你也没把主查询里的duration和子查询的最小值关联起来,最后会返回所有记录,而不是你要的最小时长的那些

下面给你两种正确的写法,根据你的实际场景选就行:

方法1:简单匹配最小值(适合返回所有最小时长的记录)

这种写法直接用WHERE子句匹配整个表中的最小duration值,语法简单易懂,而且如果有多个记录的时长都是最小值,会全部返回:

SELECT 
    sh.schedule_id,
    sh.source,
    sh.destination,
    sh.duration AS travel_time
FROM schedule sh
WHERE sh.duration = (SELECT MIN(duration) FROM schedule)
ORDER BY sh.schedule_id;

方法2:用窗口函数(灵活处理排名场景)

如果需要更灵活的排名逻辑(比如后续要扩展分组筛选最小时长),用窗口函数RANK()会更合适,它能给所有时长最小的记录打上相同的排名,确保不会漏掉任何符合条件的记录:

SELECT 
    schedule_id,
    source,
    destination,
    travel_time
FROM (
    SELECT 
        schedule_id,
        source,
        destination,
        duration AS travel_time,
        RANK() OVER (ORDER BY duration ASC) AS rnk
    FROM schedule
) ranked_records
WHERE rnk = 1
ORDER BY schedule_id;

如果你的业务场景中绝对只有一条最小时长的记录,也可以把RANK()换成ROW_NUMBER(),效果是一样的,但RANK()在多记录同最小值的场景下更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:18:46