如何根据条件从另一个表更新表中的列?

Pav*_*avi 9 sql-server subquery multiple-tables sql-update

我有两张桌子

  1. 它包含的学生表(Student_id,school_code,name,year,...)
  2. 它包含的学校表(school_id,School_code,School_name,year etc .....)

我想根据学校代码和年份使用学校代码表中的school_id列更新学生表中的school_code列.我有五年的数据.所以school_id每年都有所不同.

我的疑问是

UPDATE Master.Student
   SET school_code=( select school_id from Master.school as sc
  JOIN master.student as st
    ON st.school_code=sc.school_code
 WHERE sc.year=x)
 WHERE st.year=x;
Run Code Online (Sandbox Code Playgroud)

但它没有更新.我收到了错误subquery returns more than one value.

him*_*056 17

为什么要在直接执行此操作时使用子查询?

UPDATE st
  SET st.school_code = sc.school_id 
FROM master.student AS st
  JOIN Master.school AS sc
ON st.school_code = sc.school_code
WHERE sc.year=x
  AND st.year=x;
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅UPDATE(Transact-SQL)