如何为SQL中的每一行创建一个循环?

时间:2011-11-23 15:06:51

标签: sql sql-server

我有3个表(UsersCourseUsersCourses,表示分配给单个用户的课程。

我想创建一个程序,只要我创建一个新课程,就会将此课程分配给每个用户。我在这里看到的是一个对于每个循环来迭代每个用户在CourseUsers表中插入一个新行

如何在SQL中创建循环?

4 个答案:

答案 0 :(得分:6)

您不需要循环。

DECLARE @CourseId INT;

INSERT INTO Courses(Name) VALUES('Some Course');

SET @CourseId  = SCOPE_IDENTITY();

INSERT INTO CourseUsers(UserId, CourseId)
SELECT UserId, @CourseId
FROM Users;

答案 1 :(得分:2)

在这种情况下,你没有。

您可以发出一个insert语句,该语句将在该CourseUsers表中为每个用户插入一个新行:

INSERT INTO CourseUsers(CourseId, UserId)
SELECT @CourseId, UserId
FROM Users

SQL是一种基于集合的语言:通常您可以处理整个数据集,而无需循环。

答案 2 :(得分:1)

这样做不需要循环。

您可以使用INSERT trigger并访问INSERTED逻辑表,对其结果进行操作。

答案 3 :(得分:1)

尝试 -

INSERT INTO CourseUsers (CourseID,UserID)
SELECT 7, UserID FROM Users

其中7是你的课程ID(这显然会从课程变为课程!)。