2011-11-23 108 views
0

我有3個表格(Users,CourseUsersCourses,代表分配給單個用戶的課程)。如何爲SQL中的每一行創建一個循環?

我想創建一個程序,只要我創建一個新課程,就會將這門課程分配給每個用戶。我看到我需要的是對於每個循環來遍歷每個插入CourseUsers表中的新行的用戶

如何在SQL中創建循環?

回答

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; 
+0

以及我如何爲每個UserId重複一次? –

+3

@RodrigoAlves這將爲每個用戶插入1行。因此它已經在重複你所指的。 – Curt

+2

@RodrigoAlves - 你不需要。 'SELECT FROM用戶'做到這一點。 –

2

在這種情況下,你不這樣做。

您可以發出將在CourseUsers表中插入新行對每一位用戶的插入語句:

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

SQL是一個基於集合的語言:通常你可以在整個數據集的工作,而不需要循環。

+0

我該怎麼做 –

1

您不需要循環來完成此操作。

您可以使用INSERTtrigger並訪問INSERTED邏輯表,對其結果進行操作。

1

嘗試 -

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

其中7是你的課程ID(這將發生顯着變化,從課程當然!)。

相關問題