1

我有一个基本上设置好的表,所以有一个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
}


显然这不是正确的语法。

4

2 回答 2

3

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

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

不错,快速,面向集合....

于 2012-05-02T09:28:52.437 回答
2

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

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

...这也比基于光标的方法更快、更清晰。除非没有其他选择,否则应避免在 SQL 中循环,因为 SQL Server 更喜欢使用基于集合的方法来解决大多数问题。

于 2012-05-02T09:28:34.260 回答