我有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用戶'做到這一點。 –