SQL Server存储过程 - 然后SELECT语句在INSERT语句中使用结果

时间:2012-03-08 11:40:23

标签: sql-server stored-procedures

我正在编写一个存储过程,它将从一个表中获取结果,然后将它们复制到另一个表中。它不完全匹配,我正在改变1列并忽略另一列。如果相关,则有5列,平均3-5个结果。

我基本上需要:

SELECT * FROM sometable WHERE somecolumn = 1

然后是每个结果

INSERT INTO anothertable (a,b,c) VALUES (@a, @b, @c)

在存储过程中执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

您可以在一个声明中执行此操作:

INSERT AnotherTable (a, b, c)
SELECT a, b, c
FROM SomeTable
WHERE SomeColumn = 1

尽可能避免在循环/游标/ RBAR(按行Agonizing Row行)中进行操作,而是尝试使用上述基于SET的方法进行思考。

答案 1 :(得分:3)

我会尝试像

这样的东西
insert into anothertable (a,b,c)
select a, b, c from sometable where somecolumn = 1

答案 2 :(得分:2)

您可以直接从选择查询中插入:

INSERT INTO anothertable (a,b,c)
SELECT @a, @b, @c FROM sometable WHERE somecolumn = 1