我有3个表(Users
,CourseUsers
和Courses
,表示分配给单个用户的课程。
我想创建一个程序,只要我创建一个新课程,就会将此课程分配给每个用户。我在这里看到的是一个对于每个循环来迭代每个用户在CourseUsers
表中插入一个新行
如何在SQL中创建循环?
答案 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)
答案 3 :(得分:1)
尝试 -
INSERT INTO CourseUsers (CourseID,UserID)
SELECT 7, UserID FROM Users
其中7是你的课程ID(这显然会从课程变为课程!)。