foreach on selected rows SQL存储过程

时间:2012-05-02 09:24:38

标签: sql sql-server stored-procedures

我有一个基本设置的表,因此有一个id(UNIQUE),mapID,employe_ID,和一个值...它看起来有点像这样

ID    mapID       employee_id     value
1       1         1               Brian
2       1         1               617-555-5555
3       1         2               Boston Office
4       1         2               Mary
5       3         1               617-666-6666
6       3         2               New york office

我想循环通过这个表,所以“对于每个”相同的employee_id,我可以在另一个表中设置一个插入语句,在那里设置一点清洁。

这样就可以让你大致了解我想传达的内容。

Select * from table where employe_id=1
foreach(item in aboveSelect)
{
   Insert into table2
}


显然这不是正确的syntex。

2 个答案:

答案 0 :(得分:3)

不要对SQL数据进行“foreach循环” - 使用数据作为集合。所以在你的情况下 - 这样做:

INSERT INTO dbo.Table2(Col1, Col2, ...., ColN)
  SELECT Col1, Col2, ...., ColN
  FROM dbo.table 
  WHERE employee_id=1

好,快,面向集......

答案 1 :(得分:2)

不需要循环/游标 - 您可以将其作为单个原子语句执行:

INSERT INTO table2 (col1, col2, col3)
    SELECT id, mapid, employee_id FROM table1

...基于游标的方法也更快更干净。应该避免在SQL中循环,除非没有其他选项,因为SQL Server更喜欢基于集合的方法解决大多数问题。