[使用SQL Server 2005]幫我這個SQL:要這樣對錶中所有行「
我有一個完整的用戶的表,我想每一個用戶在分配表(16000)通過在分配表中創建一個新條目以及在課程跟蹤表中添加一個新條目,以便跟蹤他們的數據。問題是我不知道如何做一個SQL循環,因爲我不認爲你可以,但必須有一種方法來做到這一點...
對於表中的每個用戶 寫一行到每個用userID從用戶表中的兩個表...
我該怎麼做?請幫忙!
[使用SQL Server 2005]幫我這個SQL:要這樣對錶中所有行「
我有一個完整的用戶的表,我想每一個用戶在分配表(16000)通過在分配表中創建一個新條目以及在課程跟蹤表中添加一個新條目,以便跟蹤他們的數據。問題是我不知道如何做一個SQL循環,因爲我不認爲你可以,但必須有一種方法來做到這一點...
對於表中的每個用戶 寫一行到每個用userID從用戶表中的兩個表...
我該怎麼做?請幫忙!
喜歡的東西:
insert into CourseAssignment (CourseId, StudentId)
select 1 -- whatever the course number is
, StudendId
from Student
這樣的事情,沒有必要循環,如果你有使用的DUP不同 也改變1與課程價值
insert into AssingmentTable
select userid,1
from UserTable
insert into OtherTable
select userid,1
from UserTable
你應該這樣做有2個插入語句。您需要用transaction來包裝它以確保一致性,並且可能需要仔細檢查我們的isolation level以確保在2個查詢之間從用戶表中獲得一致的讀取(查看SNAPSHOT或SERIALIZABLE以避免幻影讀取)。
BEGIN TRAN
INSERT Courses
(UserID, CourseNumber, ...)
SELECT UserID, 'YourCourseNumberHere', ...
FROM Users
INSERT Assignments
(UserID, AssignmentNumber, ...)
SELECT UserID, 'YourAssignmentNumberHere', ...
FROM Users
COMMIT TRAN
+1這個答案,因爲它有圍繞這兩個陳述的交易,這更可能反映了問題的意圖。 – 2009-07-13 19:52:29
也許我misuderstand你的問題,但我認爲你需要INSERT..SELECT聲明
INSERT INTO TABLE2
SELECT filed1, field2 field3 from TABLE1
SQL適用於套。它不需要循環..
你在找什麼可能是「插入」命令。
INSERT INTO <new_table> (<list of fields, comma separated>)
SELECT <list of fields,comma separated>
FROM <usertable>
WHERE <selection condition if needed>
--grab 1 record for each student, and push it into the courses table
--i am using a sub-select to look up a course id based on a name
--that may not work for your situation, but then again, it may...
INSERT INTO COURSES(
COURSE_ID
,STUDENT_ID
)
SELECT
(SELECT COURSE_ID FROM COURSES WHERE COURSE_NAME = 'MATH')
,STUDENT_ID
FROM
STUDENTS;
--grab your recently entered course data and create an entry in
--your log table too
INSERT INTO COURSE_DATA(
COURSE_ID
,STUDENT_ID
)
SELECT
COURSE_ID
,STUDENT_ID
FROM
COURSES;
我想這個使用大量其他的都已經發布了基於集合的方法做...
...然而,只是爲了完整性值得注意的是,你可以做一個如果你真的想要循環。在線查看遊標和while循環以查看一些示例。
只是請不要陷入使用遊標的陷阱,因爲很多新手都這樣做。他們有他們的用途,但如果他們使用不當,他們可能會很糟糕 - 幾乎總是一個更好的做事方式。
謝謝大家! – BigOmega 2009-07-13 20:13:48