2009-01-13 49 views
0

兩個表:

COURSE_ROSTER - 包含
如何使用另一個表中的字段更新一個表中的字段? (SQL)

  • COURSE_ID爲外鍵COURSES
  • USER_ID作爲現場我需要插入COURSES

COURSES - 包含

  • COURSE_ID作爲主鍵
  • INSTRUCTOR_ID爲需要與USER_ID場從COURSE_ROSTER

更新將在UPDATE SQL語法是什麼領域?我正在嘗試這個,但沒有好處...我錯過了一些東西,但是我無法在網上找到它。

UPDATE COURSES 
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID 
WHERE COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID 

回答

3

並非所有的數據庫廠商(SQL服務器,Oracle等)以同樣的方式實施更新語法...您可以使用SQL Server中加入,但甲骨文不會喜歡那樣的。我相信,幾乎所有將接受correclated子查詢然而

Update Courses C 
    SET Instructor_ID = 
      (Select User_ID from Course_Roster 
      Where CourseID = C.Course_ID) 

注:Course_Roster列USER_ID可能會被更好地命名爲InstructorId(或Instructor_Id),以避免混淆

5
Update Courses 
    SET Courses.Instructor_ID = Course_Roster.User_ID 
    from Courses Inner Join Course_Roster 
    On Course_Roster.CourseID = Courses.Course_ID 

這是假設你的DBMS允許您的更新連接的查詢。 SQL Server絕對允許這樣做。如果你不能這樣做,你需要考慮使用子查詢。

2
UPDATE COURSES 
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID 
FROM COURSES 
INNER JOIN COURSE_ROSTER 
    ON COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID 
2

爲什麼如果您使用COURSE_ROSTER.user_id填充列,course.instructor_id爲什麼需要?這不是冗餘存儲嗎?

+0

其託管的異地......我可以不在乎......而且它還有一個新系統正在實施,名爲ANGEL,我不確定所有表格之間的關係是如何工作的。 – CheeseConQueso 2009-01-13 20:50:18

+0

我不明白你的答案?爲什麼它是否在外部託管?標準化仍然正常化。如果您不瞭解表格之間的關係,則不應修改數據。 – tuinstoel 2009-01-13 20:56:29

1
UPDATE COURSES 
SET INSTRUCTOR_ID = CR.USER_ID 
FROM COURSES C 
INNER JOIN COURSE_ROSTER CR 
    ON CR.COURSE_ID = C.COURSE_ID 
相關問題