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

如何在SQL中为重复值分组分配连续序号列

为相同ProductID分配连续相同序号的SQL解决方案

你当前使用的ROW_NUMBER()函数会为每一行生成唯一序号,哪怕ProductID重复也会递增,这不符合需求。要实现相同ProductID共用同一个序号,不同ProductID按顺序分配连续的下一个序号,应该使用DENSE_RANK()函数。

示例SQL语句

假设你的数据源表是Products,包含ProductID和其他业务字段,修改后的查询语句如下:

SELECT
    ProductID,
    -- 替换为你的实际字段名
    ProductName, Price,
    DENSE_RANK() OVER (ORDER BY ProductID ASC) AS Number
FROM Products;

函数差异说明

  • ROW_NUMBER():每行生成唯一序号,重复ProductID会得到不同序号,比如AMC对应1、2,NCR对应3、4
  • RANK():重复ProductID会得到相同序号,但后续序号会跳过重复的计数,比如AMC对应1、1,NCR直接跳到3、3
  • DENSE_RANK():重复ProductID共用同一序号,且后续序号连续递增,完全匹配你要的效果:AMC=1,NCR=2,MSO=3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:42:02