我如何可以更新的一个领域中的一个表带领域从另一个表?(SQL)
-
22-07-2019 - |
题
两个表格:
COURSE_ROSTER
-包含
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
解决方案
不是所有的供应商数据库(SQL服务器、Oracle、等等)。 实施更新的语法相同的方式...你可以使用一个加入SQL服务器,但Oracle将不喜欢这样。我相信只是有关都将接受一个correclated子查询,但是
Update Courses C
SET Instructor_ID =
(Select User_ID from Course_Roster
Where CourseID = C.Course_ID)
注:列User_ID在Course_Roster可能会更好命名为InstructorId(或Instructor_Id)为了避免混淆
其他提示
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服务器肯定允许这样做。如果你不能做这样的事情你需要看看对使用子查询。
UPDATE COURSES
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID
FROM COURSES
INNER JOIN COURSE_ROSTER
ON COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID
你为什么需要所列的课程。instructor_id如果你填满它COURSE_ROSTER.user_id?是不是多余的存储?
UPDATE COURSES
SET INSTRUCTOR_ID = CR.USER_ID
FROM COURSES C
INNER JOIN COURSE_ROSTER CR
ON CR.COURSE_ID = C.COURSE_ID
不隶属于 StackOverflow