我有一个基本设置的表,因此有一个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。
答案 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更喜欢基于集合的方法解决大多数问题。