选定行上的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
语句,它的输出就是插入的内容。。。。