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

MySQL中按唯一ID基于两列数据查询最小值的实现

解决方案:按ID取Fig1和Fig2的全局最小值

这里有两种实用的方法来实现你的需求,能轻松得到每个唯一ID对应的Fig1和Fig2中的最小值:

方法1:列转行后分组取最小(通用所有SQL方言)

这种方法通过UNION ALL把Fig1和Fig2的所有值合并到同一列,再按ID分组取最小值,兼容性最强,几乎适用于所有数据库:

SELECT 
    ID,
    MIN(value) AS "Min Value"
FROM (
    -- 把Fig1的所有值纳入结果集
    SELECT ID, Fig1 AS value FROM your_table
    UNION ALL
    -- 把Fig2的所有值纳入结果集(UNION ALL不会去重,保留所有原始数据)
    SELECT ID, Fig2 AS value FROM your_table
) AS unpivoted_data
GROUP BY ID;

逻辑说明:

  1. 子查询里的UNION ALL将每个ID的Fig1和Fig2值全部放到value列中,相当于把横向的两列转成纵向的行;
  2. 外层通过GROUP BY ID对每个ID分组,用MIN(value)提取该ID所有Fig1、Fig2值中的最小数。

方法2:先取每行最小再聚合(简洁高效,需支持LEAST函数)

如果你的数据库支持LEAST()函数(比如MySQL、PostgreSQL、Oracle等),可以用更简洁的写法:先计算每行中Fig1和Fig2的最小值,再对每个ID的这些行最小值取全局最小:

SELECT 
    ID,
    MIN(LEAST(Fig1, Fig2)) AS "Min Value"
FROM your_table
GROUP BY ID;

兼容SQL Server的写法:

SQL Server没有内置LEAST()函数,可用CASE语句替代:

SELECT 
    ID,
    MIN(CASE WHEN Fig1 < Fig2 THEN Fig1 ELSE Fig2 END) AS "Min Value"
FROM your_table
GROUP BY ID;

测试结果

代入你提供的测试数据,两种方法都会输出预期结果:

IDMin Value
A-1-18
A-218

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:33:23