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

带计数器的SQL表数据查询插入问题求助

问题解决:生成组内递增counter并插入新表

你的SQL之所以得到每组总数而非递增序号,是因为子查询统计的是整个分组的总记录数,每条数据都会返回这个总数。要实现组内递增的序号,需要用**窗口函数ROW_NUMBER()**来生成行号。

正确的插入SQL语句

INSERT INTO temp_1 (seq, prefix, counter)
SELECT 
    seq, 
    prefix,
    -- 按seq和prefix分组,组内生成从1开始的递增序号
    ROW_NUMBER() OVER (PARTITION BY seq, prefix ORDER BY (SELECT NULL)) AS counter
FROM temp;

关键说明

  • PARTITION BY seq, prefix:指定按seq与prefix的组合作为分组依据
  • ROW_NUMBER():在每个分组内生成从1开始的连续递增序号
  • ORDER BY (SELECT NULL):如果不需要特定的排序顺序可以用这个写法;如果你的temp表有主键或时间字段(比如id、create_time),建议替换成实际字段来保证序号的稳定性,比如ORDER BY id

原SQL问题分析

你之前的子查询:

(SELECT COUNT(*) FROM temp t WHERE t.seq = t2.seq AND t.prefix = t2.prefix)

作用是统计当前seq+prefix分组的总记录数,所以每条数据都会返回同一个总数,无法生成组内递增的序号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:42:39