如何使用AutoIncrement增加同一表的数据

时间:2014-01-03 07:06:06

标签: sql sql-server tsql

如何使用AutoIncrement增加相同表的数据.i有一个包含4列的表

id    type   no     amount
1     type1  a1      1000
2     type1  a2      2000
3     type2  b1      3000
4     type3  c1      4000

使用Loop如何将它们增加到相同数据的行。

id    type   no     amount
1     type1  a1      1000
2     type1  a2      2000
3     type2  b1      3000
4     type3  c1      4000
5     type1  a1      1000
6     type1  a2      2000
7     type2  b1      3000
8     type3  c1      4000
9     type1  a1      1000
10     type1  a2      2000
11     type2  b1      3000
12     type3  c1      4000

请建议我使用最好的循环。我如何才能继续前进

3 个答案:

答案 0 :(得分:1)

在交叉连接中使用具有足够行数的表。

这将在表格中添加您已有的行100次。

insert into YourTable(type, no, amount)
select type, no, amount
from YourTable
  cross join (
             select top(100) 1
             from sys.all_objects
             ) as T(X)

答案 1 :(得分:0)

这是将表的一部分插入到同一个表中的方法。

INSERT INTO TABLE1
    SELECT TOP 4 type,no,amount
    FROM TABLE1
    ORDER BY ID 

答案 2 :(得分:0)

  1. 有两种方法可以达到要求:

    1. 如果插入语句很容易编写脚本并且记录较少:

      USE <database_name>  
      Go  
      INSERT INTO looprecords([type],[no],[amount]) VALUES('type1','a1',1000);  
      INSERT INTO looprecords([type],[no],[amount]) VALUES('type1','a2',2000);  
      INSERT INTO looprecords([type],[no],[amount]) VALUES('type2','b1',3000);
      INSERT INTO looprecords([type],[no],[amount]) VALUES('type3','c1',4000);  
      Go 5            -- You can control this number on how many times you want to loop.
      
    2. 如果插入语句不能轻易编写脚本,那么:

      insert into looprecords([type],[no],[amount])
      select [type],[no],[amount] from looprecords;
      
  2. 每次运行它都会按顺序插入记录1,2,4,8,16,32 ........等等。 (例如,如果存在16条记录,则在下一次运行中它将为您提供32条记录)

    将T-SQL放在任何有效的循环中以获得所需的结果。

    我希望它已经回答了你的问题。