Как я могу обновить поле в одной таблице с полем из другой таблицы? (SQL) - PullRequest
1 голос
/ 13 января 2009

Две таблицы:

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

Ответы [ 5 ]

5 голосов
/ 13 января 2009
    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 определенно позволяет это. Если вы не можете сделать что-то подобное, вам нужно использовать подзапрос.

4 голосов
/ 13 января 2009

Не все поставщики баз данных (SQL Server, Oracle и т. Д.) Реализуют синтаксис обновления одинаково ... Вы можете использовать объединение в 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), чтобы избежать путаницы

2 голосов
/ 13 января 2009

Зачем вам нужен столбец course.instructor_id, если вы заполняете его COURSE_ROSTER.user_id? Разве это не избыточное хранилище?

2 голосов
/ 13 января 2009
UPDATE COURSES 
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID 
FROM COURSES
INNER JOIN COURSE_ROSTER
    ON COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID
1 голос
/ 14 января 2009
UPDATE COURSES 
SET INSTRUCTOR_ID = CR.USER_ID 
FROM COURSES C
INNER JOIN COURSE_ROSTER CR   
   ON CR.COURSE_ID = C.COURSE_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...