1

两个表:

COURSE_ROSTER- 包含

  • COURSE_ID作为外键COURSES
  • USER_ID作为我需要插入的字段COURSES

COURSES- 包含

  • COURSE_ID作为主键
  • INSTRUCTOR_ID作为需要使用字段更新的USER_ID字段COURSE_ROSTER

UPDATEsql语法是什么?我正在尝试这个,但没有用......我错过了一些东西,我无法在网上找到它。

UPDATE COURSES 
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID 
WHERE COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID
4

5 回答 5

5
    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 绝对允许这样做。如果你不能做这样的事情,你需要考虑使用子查询。

于 2009-01-13T20:45:57.043 回答
4

并非所有数据库供应商(SQL Server、Oracle 等)都以相同的方式实现 Update 语法……您可以在 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)以避免混淆

于 2009-01-13T20:48:21.143 回答
2
UPDATE COURSES 
SET COURSES.INSTRUCTOR_ID = COURSE_ROSTER.USER_ID 
FROM COURSES
INNER JOIN COURSE_ROSTER
    ON COURSE_ROSTER.COURSE_ID = COURSES.COURSE_ID
于 2009-01-13T20:47:34.950 回答
2

如果你用 COURSE_ROSTER.user_id 填充它,为什么需要列 course.instructor_id?不是冗余存储吗?

于 2009-01-13T20:47:57.460 回答
1
UPDATE COURSES 
SET INSTRUCTOR_ID = CR.USER_ID 
FROM COURSES C
INNER JOIN COURSE_ROSTER CR   
   ON CR.COURSE_ID = C.COURSE_ID
于 2009-01-13T21:56:23.407 回答