选定行上的foreach SQL存储过程

选定行上的foreach SQL存储过程,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个基本设置的表,所以有一个id(UNIQUE)、mapID、employee\u id、和一个值。。。看起来有点像这样 桌子 我想循环遍历这个表,这样“对于每个”相同的员工id,我可以在另一个表中执行insert语句,在该表中设置得更干净一些 这样会让你大致了解我想表达的意思 Select * from table where employe_id=1 foreach(item in aboveSelect) { Insert into table2 } 显然这不是正确的synte

我有一个基本设置的表,所以有一个
id(UNIQUE)、mapID、employee\u id、
和一个值。。。看起来有点像这样

桌子

我想循环遍历这个表,这样“对于每个”相同的员工id,我可以在另一个表中执行insert语句,在该表中设置得更干净一些

这样会让你大致了解我想表达的意思

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


显然这不是正确的syntex。

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

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

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

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

INSERT INTO table2 (col1, col2, col3)
    SELECT id, mapid, employee_id FROM table1
…这也比基于光标的方法更快、更清晰。除非没有其他选项,否则应避免在SQL中循环,因为SQL Server更喜欢使用基于集合的方法来解决大多数问题。

不要对SQL数据进行“foreach循环”-将数据作为集合使用。因此,在您的情况下,请这样做:

INSERT INTO dbo.Table2(Col1, Col2, ...., ColN)
  SELECT Col1, Col2, ...., ColN
  FROM dbo.table 
  WHERE employee_id=1
漂亮、快速、面向集合……

不要对SQL数据进行“foreach循环”-将数据作为集合使用。因此,在您的情况下,请这样做:

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

好的,快速的,面向集合的…

好的,克里斯,你确定这会在表2中创建多个记录(foreach employe_id=1)好的,添加一个WHERE子句,它会插入你选择的任何内容,这似乎是你想要做的?好的,克里斯,你确定这会在表2中创建多个记录(foreach employe_id=1)好的,添加WHERE子句,它将插入您正在选择的任何内容,这似乎是您想要做的?好的,marc\s您确定这将在表2中创建多个记录(foreach employee_id=1)@djCool:如果源表中有多行符合此条件(
WHERE employee_id=1
),那么肯定是的!这个SQL语句将在
表2
中插入尽可能多的行,就像在
中有与标准匹配的行一样,但是如果我还想添加MAX(table3.id),即插入到表2(table3_id,COL1,COL2,COL3)中,从表1中选择MAX(table3.id),R1.COL1,T1.COL2,T1.COL3,表2,其中表2.Employee_ID=1@djCool:然后您将获得与条件匹配的插入到
表2中的行数-其中一列将是
MAX(Table3.ID)
值-插入的每一行的值相同。基本上:只需自行运行
SELECT
语句-其输出就是插入的内容…好的,marc\s您确定这将在表2中创建多个记录(foreach employee\u id=1)@djCool:如果源表中有多行符合此条件(
其中employee\u id=1
),那么绝对是!这个SQL语句将在
表2
中插入尽可能多的行,就像在
中有与标准匹配的行一样,但是如果我还想添加MAX(table3.id),即插入到表2(table3_id,COL1,COL2,COL3)中,从表1中选择MAX(table3.id),R1.COL1,T1.COL2,T1.COL3,表2,其中表2.Employee_ID=1@djCool:然后您将获得与条件匹配的插入到
表2中的行数-其中一列将是
MAX(Table3.ID)
值-插入的每一行的值相同。基本上:只需自己运行
SELECT
语句,它的输出就是插入的内容。。。。