다른 테이블의 필드가있는 한 테이블의 필드를 어떻게 업데이트 할 수 있습니까? (SQL)

StackOverflow https://stackoverflow.com/questions/440702

  •  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 등)가 동일한 방식으로 업데이트 구문을 구현하는 것은 아닙니다. SQL Server에서 조인을 사용할 수 있지만 Oracle은이를 좋아하지 않습니다. 나는 거의 모든 것이 부유 한 하위 퀘스트를 받아 들일 것이라고 믿는다

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

참고 : Course_roster의 user_id 열은 아마도 혼란을 피하기 위해 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 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_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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top