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

SQL多插入语句执行时变量递增异常,如何实现预期的8行交替数据插入?

问题原因

  1. 初始版本逻辑问题:你每次循环给@counter加1后,同时插入A、B两条记录,会导致同一个number值对应两个字母,自然会输出1A、1B、2A、2B的结果。
  2. 二次修改的逻辑问题:你把插入B和@counter递增的逻辑放到了while循环体外,循环体只有插入A的语句,@counter永远不会变化,代码会进入死循环,根本不会执行后续插入B的逻辑。

修正方案

你只需要保证每次循环只插入1条记录,循环总共跑8次,根据@counter的奇偶性匹配对应的字母即可,参考代码如下:

declare @counter as int = 0

while (@counter < 8)
begin
    set @counter = @counter + 1
    -- 奇数匹配A,偶数匹配B
    insert into [table] (number, letter) 
    values (@counter, case when @counter % 2 = 1 then 'A' else 'B' end)
end

注意:table是SQL保留关键字,建议用方括号[]包裹避免语法报错。

如果你希望保留每次循环插入两条记录的写法,也可以调整为如下逻辑:

declare @counter as int = 0

while (@counter < 8)
begin
    insert into [table] (number, letter) 
    values (@counter + 1, 'A')
    insert into [table] (number, letter) 
    values (@counter + 2, 'B')
    set @counter = @counter + 2
end

两种写法最终输出的结果都和你期望的目标一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:45:03