帮我解决这个问题:'为表中的所有行做这个'

Met*_*uru 4 sql t-sql sql-server sql-server-2005

[使用SQL Server 2005]

我有一个充满用户的表,我想通过在分配表中创建一个新条目以及在课程跟踪表中的新条目将表中的每个用户(16,000+)分配给一个课程,这样他们的数据就可以了跟踪.问题是我不知道如何在SQL中进行循环,因为我认为你不能,但必须有办法做到这一点......

对于TABLE中的每个用户,使用来自用户TABLE的userID向两个表中的每一个写一行...

我该怎么做?请帮忙!

Sco*_*vey 13

你用2个插入语句来做这个.您希望使用事务来包装它以确保一致性,并且可能需要仔细检查我们的隔离级别,以确保从两个查询之间的users表中获得一致的读取(请查看SNAPSHOT或SERIALIZABLE到避免幻影读取).

BEGIN TRAN

INSERT  Courses
        (UserID, CourseNumber, ...)
SELECT  UserID, 'YourCourseNumberHere', ...
FROM    Users

INSERT  Assignments
        (UserID, AssignmentNumber, ...)
SELECT  UserID, 'YourAssignmentNumberHere', ...
FROM    Users

COMMIT TRAN   
Run Code Online (Sandbox Code Playgroud)

  • 这个答案的+1是因为它有一个围绕这两个陈述的交易,这更有可能反映了问题的意图. (2认同)

Sha*_*nce 6

就像是:

insert into CourseAssignment (CourseId, StudentId)
select 1 -- whatever the course number is
   , StudendId
from Student
Run Code Online (Sandbox Code Playgroud)