我正在编写一个存储过程,它将从一个表中获取结果,然后将其复制到另一个表中。它不是完全匹配的,我正在更改一列并忽略另一列。有5列,如果相关,平均有3-5个结果。
我基本上需要:
SELECT * FROM sometable WHERE somecolumn = 1
然后,对于每个结果
INSERT INTO anothertable (a,b,c) VALUES (@a, @b, @c)
在存储过程中执行此操作的最佳方法是什么?
发布于 2012-03-08 19:42:11
您可以在一条语句中做到这一点:
INSERT AnotherTable (a, b, c)
SELECT a, b, c
FROM SomeTable
WHERE SomeColumn = 1
只要有可能,避免在循环/光标/RBAR (Row By Agonizing )中做事情,而是尝试像上面那样用基于集合的方法进行思考。
发布于 2012-03-08 19:42:47
我会尝试像这样的东西
insert into anothertable (a,b,c)
select a, b, c from sometable where somecolumn = 1
发布于 2012-03-08 19:43:17
您可以直接从select查询中插入:
INSERT INTO anothertable (a,b,c)
SELECT @a, @b, @c FROM sometable WHERE somecolumn = 1
https://stackoverflow.com/questions/9617078
复制相似问题