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

如何为每个唯一键A选取对应B值最小的单行数据

解决方案

方法1:使用窗口函数(推荐,支持现代数据库)

窗口函数ROW_NUMBER()可以轻松实现分组取top1的需求,适用于MySQL 8.0+、PostgreSQL、SQL Server等数据库:

SELECT A, B, C
FROM (
    SELECT 
        *,
        -- 按A分组,每组内按B升序编号
        ROW_NUMBER() OVER (PARTITION BY A ORDER BY B ASC) AS row_num
    FROM entry
) AS temp
-- 取每组的第一行(B最小的行)
WHERE row_num = 1;

方法2:GROUP BY + 关联查询(兼容旧版本数据库)

如果你的数据库不支持窗口函数(比如MySQL 5.x),可以先分组找到每个A对应的最小B,再关联原表获取完整行数据:

SELECT e.*
FROM entry e
INNER JOIN (
    -- 先分组计算每个A的最小B
    SELECT A, MIN(B) AS min_B
    FROM entry
    GROUP BY A
) AS t ON e.A = t.A AND e.B = t.min_B;

方法3:关联子查询

通过子查询直接判断当前行的B是否为对应A的最小值:

SELECT *
FROM entry e
WHERE B = (
    SELECT MIN(B)
    FROM entry
    WHERE A = e.A
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:22:55