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

如何编写SQL查询获取一行多列最小值并展示在结果最后一列

单行多列最小值SQL查询实现

你需要计算每行out、mid、in三个字段的最小值,作为最后一列Smallest返回,以下是不同场景的实现方案:

方案1:使用LEAST函数(主流数据库通用,MySQL/PostgreSQL/SQLite/SQL Server 2022+支持)

这个方案语法最简洁,处理空值后即可匹配你给出的示例效果:

SELECT 
    id,
    COALESCE(`out`, '-') AS `out`,
    COALESCE(mid, '-') AS mid,
    COALESCE(`in`, '-') AS `in`,
    LEAST(
        COALESCE(`out`, 999999999),
        COALESCE(mid, 999999999),
        COALESCE(`in`, 999999999)
    ) AS Smallest
FROM 替换为你的实际表名;

方案2:CASE WHEN兼容写法(所有数据库版本通用)

如果你使用的数据库不支持LEAST函数,可以用CASE WHEN逻辑实现,效果完全一致:

SELECT 
    id,
    COALESCE(`out`, '-') AS `out`,
    COALESCE(mid, '-') AS mid,
    COALESCE(`in`, '-') AS `in`,
    CASE 
        WHEN COALESCE(`out`, 999999999) <= COALESCE(mid, 999999999) AND COALESCE(`out`, 999999999) <= COALESCE(`in`, 999999999) THEN `out`
        WHEN COALESCE(mid, 999999999) <= COALESCE(`in`, 999999999) THEN mid
        ELSE `in`
    END AS Smallest
FROM 替换为你的实际表名;

注意事项

  • out和in属于SQL保留关键字,查询时需要转义:MySQL用反引号`包裹,PostgreSQL/SQLite用双引号包裹,SQL Server用方括号[]包裹,避免语法报错。
  • 代码中的999999999可以根据你的业务数值范围调整为更大的数值,保证大于所有业务可能出现的有效值即可,空值替换为该值后不会影响最小值的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:36:01