Sql 如何在现有编号列表之后插入编号列表

Sql 如何在现有编号列表之后插入编号列表,sql,Sql,我在数据库中有一个列,用于存储调查的pin码。目前,数字列表为5100-6674。我需要在当前调查中保留这些pin码,但我还必须在同一列中添加新的pin码列表。我只想确保我创建的查询将在不影响旧列表的情况下将新列表插入到列中。还有另一列提供了调查类型。我还需要将新类型添加到新列表中,例如,目前我有5100-6674范围内的管脚列表,测量类型为CLN。下一个列表是8100-8855之间的数字范围,调查类型为TM。我不想把目前正在进行的调查搞得一团糟,所以我只有一次机会把它做好,否则会有一个大混乱。

我在数据库中有一个列,用于存储调查的pin码。目前,数字列表为5100-6674。我需要在当前调查中保留这些pin码,但我还必须在同一列中添加新的pin码列表。我只想确保我创建的查询将在不影响旧列表的情况下将新列表插入到列中。还有另一列提供了调查类型。我还需要将新类型添加到新列表中,例如,目前我有5100-6674范围内的管脚列表,测量类型为CLN。下一个列表是8100-8855之间的数字范围,调查类型为TM。我不想把目前正在进行的调查搞得一团糟,所以我只有一次机会把它做好,否则会有一个大混乱。这是我提出的问题

DECLARE @PIN INT
SET @PIN = 8100
WHILE (@PIN <= 8855)
BEGIN
    Insert into Survey (Pin) values (@PIN)
    Select @PIN = @PIN + 1
    from Survey
    where Pin > 6674
END

UPDATE Survey SET Type = 'TM'
WHERE Pin > 6674
声明@PIN INT
设置@PIN=8100
而(@pin6674
结束
更新测量集类型='TM'
其中Pin>6674

感谢您的帮助或建议。

由于插入的数字较少,您只需从现有集合中选择一个范围并添加一个常量:

INSERT INTO Survey (PIN, Type)
SELECT Pin + 3000, 'TM'
FROM Survey
WHERE Pin BETWEEN 5100 and 5855

如果要插入更多的值,可以使用相同的技术,但可以成批插入。

如果不了解如何插入此数据,我真的看不出您所采用的方法有任何错误。无论PIN是否为主键,默认情况下它都是不同的,并且不允许您插入重复记录


您也可以考虑添加一个列来记录您创建数据的时间点,以防您在某个特定的时间/时间内弄乱某些东西。

< P>我强烈建议您在PIN的同时设置<代码>类型< /代码>,并确定增量步骤:

DECLARE @PIN INT;
SET @PIN = 8100;
WHILE (@PIN <= 8855)
BEGIN
    Insert into Survey(Pin, Type)
        values (@PIN, @TYPE);

    set @PIN = @PIN + 1;
END;
声明@PIN INT;
设置@PIN=8100;
而(@PIN
with pins as (
      select 8100 as pin
      union all
      select pin + 1
      from pins
      where pin < 8855
  )
Insert into Survey(Pin, Type)
    select pin, 'TM'
    from pins;
option (MAXRECURSION 10000);