다른 테이블의 필드가있는 한 테이블의 필드를 어떻게 업데이트 할 수 있습니까? (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 등)가 동일한 방식으로 업데이트 구문을 구현하는 것은 아닙니다. 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
제휴하지 않습니다 StackOverflow