如何基于SEQNO列生成新序列?不修改原表新增查询列
按分组生成自增序列的SQL查询方案
你可以用SQL的**窗口函数ROW_NUMBER()**实现这个需求,无需修改原表,仅在查询时新增目标列即可。这个函数能按指定字段分组,对组内数据排序后生成从1开始的连续序号。
完整查询语句
假设你的表名为your_table,执行以下查询即可得到符合要求的结果:
SELECT ID, SEQNO, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY SEQNO) AS `Order` FROM your_table;
关键参数说明
PARTITION BY ID:以ID作为分组依据,每个不同的ID会单独计算序列ORDER BY SEQNO:在每个分组内部,按照SEQNO升序排列,确保最小的SEQNO对应序号1ROW_NUMBER():为每个分组内的行生成从1开始的连续整数,完全匹配你需要的Order列效果
执行该查询后,返回结果与你提供的示例完全一致:
ID SEQNO Order N1 4 1 N1 7 2 N1 11 3 N2 3 1 N2 5 2
内容的提问来源于stack exchange,提问作者JD24
相关产品推荐
相关产品推荐

