两张桌子:
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
答案 0 :(得分: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绝对允许这样做。如果你不能做这样的事情,你需要考虑使用子查询。
答案 1 :(得分:4)
并非所有数据库供应商(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)以避免混淆
答案 2 :(得分: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
答案 3 :(得分:2)
如果用COURSE_ROSTER.user_id填充它,为什么需要列course.instructor_id?它不是冗余存储吗?
答案 4 :(得分:1)
UPDATE COURSES
SET INSTRUCTOR_ID = CR.USER_ID
FROM COURSES C
INNER JOIN COURSE_ROSTER CR
ON CR.COURSE_ID = C.COURSE_ID