我如何可以更新的一个领域中的一个表带领域从另一个表?(SQL)

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

  •  22-07-2019
  •  | 
  •  

两个表格:

COURSE_ROSTER -包含

  • COURSE_ID 作为外交的关键 COURSES
  • USER_ID 作领域,我需要插入 COURSES

COURSES -包含

  • COURSE_ID 作为首要关键
  • INSTRUCTOR_ID 作为领域需要更新 USER_IDCOURSE_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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top