2009-01-13 50 views
0

两个表:

COURSE_ROSTER - 包含
如何使用另一个表中的字段更新一个表中的字段? (SQL)

  • 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 

回答

3

并非所有的数据库厂商(SQL服务器,Oracle等)以同样的方式实施更新语法...您可以使用SQL Server中加入,但甲骨文不会喜欢那样的。我相信,几乎所有将接受correclated子查询然而

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

注:Course_Roster列USER_ID可能会被更好地命名为InstructorId(或Instructor_Id),以避免混淆

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

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 
2

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

+0

其托管的异地......我可以不在乎......而且它还有一个新系统正在实施,名为ANGEL,我不确定所有表格之间的关系是如何工作的。 – CheeseConQueso 2009-01-13 20:50:18

+0

我不明白你的答案?为什么它是否在外部托管?标准化仍然正常化。如果您不了解表格之间的关系,则不应修改数据。 – tuinstoel 2009-01-13 20:56:29

1
UPDATE COURSES 
SET INSTRUCTOR_ID = CR.USER_ID 
FROM COURSES C 
INNER JOIN COURSE_ROSTER CR 
    ON CR.COURSE_ID = C.COURSE_ID 
相关问题