用于复制记录的SQL

时间:2014-02-26 16:28:12

标签: sql sql-server

复制表m次中所有记录的最简单方法是什么?问题是复制必须保持旧订单。即,如果我所有的都是记录

A, B, & C, 
重复3次后,我应该

A, B, C, A, B, C, A, B, & C, 

而不是其他任何东西,如A,A,A,B,......等。

由于

2 个答案:

答案 0 :(得分:1)

如果您想按原始顺序返回行,可以这样做:

select t.*
from table t cross join
     (select 1 as n union all select 2 union all select 3) n
order by n.n, t.ordercol;

order by保证订购。它取决于订购的原始列。

顺便说一句,如果您使用union all或递归CTE来生成数据(这些是合理的替代方案),这是相同的。除非您使用order by

,否则结果集中的排序

答案 1 :(得分:0)

希望这会给你一个想法: -

DECLARE @Start int = 1
DECLARE @Stop int = 5
DECLARE @tbl table
(
   oldValue varchar(20)
)
INSERT INTO @tbl
    SELECT name FROM TABLE_01

WHILE @start<=@stop
  BEGIN
    INSERT INTO table_01
    SELECT oldValue FROM @tableVariable

    SET @start = @start + 1 
  END 

由于您说重复所有记录,所以首先在表变量中插入所有记录。然后使用while循环将所有记录插入同一个表中n次。