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

请求编写Transact-SQL脚本:按FK_ID重新生成SEQ连续序号

按FK_ID分组重新生成连续SEQ序号的Transact-SQL脚本

问题描述

现有数据表包含以下字段:

  • PK_ID(数值型):值始终唯一
  • FK_ID(数值型):单个FK_ID可对应多条PK_ID记录
  • SEQ(数值型):表示PK_ID在对应FK_ID下的优先级序号,初始状态所有值均为1

需要编写Transact-SQL脚本,实现按FK_ID分组,将每组内的SEQ从1开始重新分配连续序号,直到该组最后一条记录。

当前数据示例

PK_IDFK_IDSEQ
121188211
358188211
611188211
7251233571
95233571
922155111
1538101
777538101
953538101
120538101

预期结果

PK_IDFK_IDSEQ
121188211
358188212
611188213
7251233571
95233572
922155111
1538101
777538102
953538103
120538104

解决方案

使用ROW_NUMBER()窗口函数结合CTE实现分组编号并更新:

WITH RankedData AS (
    SELECT 
        PK_ID,
        FK_ID,
        SEQ,
        ROW_NUMBER() OVER (PARTITION BY FK_ID ORDER BY PK_ID) AS New_SEQ
    FROM YourTableName -- 替换为实际数据表名称
)
UPDATE RankedData
SET SEQ = New_SEQ;

说明

  • PARTITION BY FK_ID:按FK_ID对数据分组,每组单独生成序号
  • ORDER BY PK_ID:指定每组内的排序规则(示例中按PK_ID升序,可根据需求修改排序字段)
  • CTE RankedData生成包含新序号的临时数据集,通过UPDATE直接将新序号赋值给原表的SEQ字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:45:33