Как я могу обновить поле в одной таблице полем из другой таблицы?(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 Server, Oracle и т.д.) Реализуют синтаксис обновления одинаковым образом...Вы можете использовать join в SQL Server, но Oracle это не понравится.Однако я полагаю, что почти все примут исправленный подзапрос
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
Это предполагает, что ваша СУБД допускает объединения в ваших запросах на обновление.SQL Server определенно позволяет это.Если вы не можете сделать что-то подобное, вам нужно подумать об использовании подзапроса.
UPDATE COURSES
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID
FROM COURSES
INNER JOIN COURSE_ROSTER
ON COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID
Зачем вам нужен столбец course.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