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

SQL Server 2019:筛选非最小ID并添加对应分组最小ID列

实现SQL Server分组筛选非最小ID并显示组内最小ID

针对你的需求,在SQL Server 2019中可以通过以下两种常用方式实现:

方法一:使用窗口函数(推荐,高效)

利用MIN() OVER(PARTITION BY)窗口函数直接计算每组的最小ID,再过滤掉等于最小ID的记录:

SELECT 
    id AS [not min],
    text,
    MIN(id) OVER (PARTITION BY text) AS [min id]
FROM 
    YourTableName  -- 替换为实际表名
WHERE 
    id <> MIN(id) OVER (PARTITION BY text)
ORDER BY 
    text, [not min];

说明

  • PARTITION BY text:按text字段分组
  • MIN(id) OVER(...):计算当前分组内的最小ID
  • WHERE子句过滤掉分组中ID等于最小ID的记录
  • 重命名列名以匹配预期结果格式

方法二:子查询关联

先通过子查询获取每组的最小ID,再与原表关联筛选目标记录:

SELECT 
    t.id AS [not min],
    t.text,
    m.min_id AS [min id]
FROM 
    YourTableName t  -- 替换为实际表名
INNER JOIN (
    -- 子查询计算每组最小ID
    SELECT text, MIN(id) AS min_id
    FROM YourTableName
    GROUP BY text
) m ON t.text = m.text
WHERE 
    t.id <> m.min_id
ORDER BY 
    t.text, t.id;

说明

  • 子查询先按text分组计算每组最小ID
  • 内连接原表后,通过WHERE过滤掉等于最小ID的记录

两种方法都能得到你需要的结果,窗口函数方案在大数据量场景下性能更优,因为只需扫描一次数据表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:03:19