我有3个表格(Users
,CourseUsers
和Courses
,代表分配给单个用户的课程)。如何为SQL中的每一行创建一个循环?
我想创建一个程序,只要我创建一个新课程,就会将这门课程分配给每个用户。我看到我需要的是对于每个循环来遍历每个插入CourseUsers
表中的新行的用户
如何在SQL中创建循环?
我有3个表格(Users
,CourseUsers
和Courses
,代表分配给单个用户的课程)。如何为SQL中的每一行创建一个循环?
我想创建一个程序,只要我创建一个新课程,就会将这门课程分配给每个用户。我看到我需要的是对于每个循环来遍历每个插入CourseUsers
表中的新行的用户
如何在SQL中创建循环?
你不需要循环。
DECLARE @CourseId INT;
INSERT INTO Courses(Name) VALUES('Some Course');
SET @CourseId = SCOPE_IDENTITY();
INSERT INTO CourseUsers(UserId, CourseId)
SELECT UserId, @CourseId
FROM Users;
在这种情况下,你不这样做。
您可以发出将在CourseUsers表中插入新行对每一位用户的插入语句:
INSERT INTO CourseUsers(CourseId, UserId)
SELECT @CourseId, UserId
FROM Users
SQL是一个基于集合的语言:通常你可以在整个数据集的工作,而不需要循环。
我该怎么做 –
尝试 -
INSERT INTO CourseUsers (CourseID,UserID)
SELECT 7, UserID FROM Users
其中7是你的课程ID(这将发生显着变化,从课程当然!)。
以及我如何为每个UserId重复一次? –
@RodrigoAlves这将为每个用户插入1行。因此它已经在重复你所指的。 – Curt
@RodrigoAlves - 你不需要。 'SELECT FROM用户'做到这一点。 –