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

如何用SQL为同日期的重复与唯一产品添加标志序列号?

实现同一日期同产品的连续序列号填充

核心方案:使用窗口函数(推荐)

针对支持窗口函数的数据库(MySQL 8.0+、PostgreSQL、SQL Server、Oracle等),可以用ROW_NUMBER()窗口函数按日期和产品分组生成连续序号:

UPDATE 表A
SET count = sub.rn
FROM (
    SELECT 
        Date,
        product,
        -- 按日期+产品分组,组内生成从1开始的连续序号
        ROW_NUMBER() OVER (PARTITION BY Date, product ORDER BY Date) AS rn
    FROM 表A
) AS sub
-- 关联原表确保更新对应行
WHERE 表A.Date = sub.Date 
  AND 表A.product = sub.product;

说明

  • PARTITION BY Date, product:指定分组依据,同一日期+同一产品为一组
  • ORDER BY Date:组内排序规则,若需要按其他列(如数据插入顺序对应的ID)排序,替换成目标列即可,保证序号连续唯一

兼容旧版MySQL(无窗口函数)

如果使用MySQL 5.x版本,可通过自定义变量实现:

-- 初始化变量
SET @prev_date = '', @prev_product = '', @cnt = 1;

UPDATE 表A
SET count = CASE
    WHEN Date = @prev_date AND product = @prev_product THEN 
        @cnt := @cnt + 1
    ELSE 
        @cnt := 1 AND @prev_date := Date AND @prev_product := product
END
-- 必须按分组列排序,保证变量逻辑正确
ORDER BY Date, product;

注意事项

  • 执行更新前建议备份数据表,避免操作失误导致数据异常
  • 若表存在主键/唯一标识列,在UPDATE的WHERE条件中加入该列可提升更新准确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:15:33