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

如何在SQL Server中编写SQL语句获取基于两列最小值的行

在SQL Server中获取两列均为最小值的行

要找到同时满足Rank和Val1两列都是整个表中最小值的行,这里有几种实用的方法,我会逐一说明:

方法一:使用子查询直接过滤

这是最直观的方式,先分别查询出Rank和Val1的最小值,再用WHERE子句筛选同时符合这两个条件的行:

SELECT *
FROM YourTableName
WHERE Rank = (SELECT MIN(Rank) FROM YourTableName)
  AND Val1 = (SELECT MIN(Val1) FROM YourTableName);

如果你的表中有多行同时满足Rank和Val1都是最小值,这个查询会返回所有符合条件的行,不会遗漏。

方法二:使用窗口函数(适用于更复杂的场景)

如果后续需要扩展逻辑(比如按其他分组筛选),窗口函数会更灵活。这里可以用ROW_NUMBER()或者RANK():

用ROW_NUMBER()(只返回一行,若有多个符合条件的行,会随机取一个)

WITH RankedData AS (
    SELECT *,
           ROW_NUMBER() OVER (ORDER BY Rank ASC, Val1 ASC) AS RowNum
    FROM YourTableName
)
SELECT *
FROM RankedData
WHERE RowNum = 1;

用RANK()(返回所有同时满足Rank最小且Val1最小的行)

WITH RankedData AS (
    SELECT *,
           RANK() OVER (ORDER BY Rank ASC, Val1 ASC) AS RankNum
    FROM YourTableName
)
SELECT *
FROM RankedData
WHERE RankNum = 1;

方法三:使用TOP 1结合ORDER BY(仅需返回一行时)

如果你确定只有一行符合条件,或者只需要任意一行符合条件的记录,可以用TOP 1:

SELECT TOP 1 *
FROM YourTableName
ORDER BY Rank ASC, Val1 ASC;

这个查询会先按Rank升序排序,再按Val1升序排序,取第一行——也就是同时满足两列最小的行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:03:15