2011-05-04 42 views
1

没有使用一段时间或forloop,有没有办法在单个插入插入记录两次或更多次?SQL我想在插入时重复记录

感谢

INSERT INTO TABLE2 ((VALUE,VALUE) 
SELECT VALUE,VALUE FROM TABLE1)) * 2 

回答

2

您将需要CROSS JOIN在台上有2行。以下将在SQL Server中起作用。

INSERT INTO TABLE2 ((VALUE,VALUE) 

SELECT VALUE,VALUE 
FROM TABLE1, (SELECT 1 UNION ALL SELECT 2) T(C) 

如果你有一个辅助的数字表,你也可以做

SELECT VALUE,VALUE 
FROM TABLE1 JOIN Numbers ON N <=2 
+0

也可以执行'select value,table1中的值t1 union all select value,table1的值t2 ...'。这样做的好处是可以添加一个过滤器来选择插入一次哪些记录以及插入两次记录。 – mellamokb 2011-05-04 13:22:00

+0

好点。这意味着源表会被扫描两次。 – 2011-05-04 13:23:40

+0

其实,难道你不能动态确定有多少记录要通过东西来包含'SELECT Value,Value FROM Table1 JOIN Numbers ON N <= Value'? – mellamokb 2011-05-04 14:15:40

1

--first创建一个虚拟表2个记录

INSERT INTO TABLE2 ((VALUE,VALUE) 
SELECT VALUE,VALUE FROM TABLE1, dummytable)) 
+0

联盟所有重复记录,但它不动态。有时记录可能需要重复3或4次。也许我真的可以使用的是一个while循环? – tdjfdjdj 2011-05-04 13:30:22

+0

@user - 您可以根据我的答案中的第二个建议使用数字表格。 – 2011-05-04 15:55:51

0

这不是一种优雅的方式,但可以轻松工作。 如果你有一个表的足够高数量的记录,你可以做一个TOP子句的交叉联接

INSERT INTO TABLE2 
SELECT VALUE,VALUE FROM TABLE1 
cross join (select top 2 TABLE_DUMMY) as DUMMY 

这适用于MQ SQLSERVER,让它在其他DBMS工作,你应该用改变TOP您的DBMS所需的关键字