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

提取对应列最小值/最大值的唯一行组合(SQL实现)

解决思路与SQL实现

针对你要提取TableTest表中Value列最大值和最小值对应所有行(包括重复最值的情况)的需求,我给你两种实用的解决方案:

方案一:子查询直接匹配全局最值

这种方法简单直观,适合快速实现需求:

SELECT t.*
FROM TableTest t
WHERE t.Value = (SELECT MAX(Value) FROM TableTest)
   OR t.Value = (SELECT MIN(Value) FROM TableTest);

说明:

  • 两个子查询分别获取整个表Value列的最大值和最小值
  • 主查询筛选出Value等于这两个值的所有行,自动包含重复最值的条目
  • 优点是代码简洁,大部分数据库都支持,小数据量下性能表现优秀

方案二:窗口函数标记全局最值

如果后续有扩展需求(比如按某个字段分组取最值),这种方法灵活性更高:

WITH ValueStats AS (
    SELECT 
        *,
        MAX(Value) OVER () AS GlobalMax,
        MIN(Value) OVER () AS GlobalMin
    FROM TableTest
)
SELECT TypeID, PopularityID, CriteriaID, ExposureID, Value
FROM ValueStats
WHERE Value = GlobalMax OR Value = GlobalMin;

说明:

  • 通过CTE(公共表表达式)给每一行附加全局的最大值和最小值
  • 再筛选出Value等于GlobalMax或GlobalMin的行
  • 若后续需要按TypeID分组取各组的最值,只需修改OVER()为OVER(PARTITION BY TypeID)即可,扩展性强

两种方案都能完美处理Value列存在重复最值的情况——只要行的Value等于全局最大或最小,就会被全部提取出来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:25:45