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

标签 sql sql-server sql-update subquery multiple-tables

我有两张 table

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

我想根据学校代码和年份,使用学校代码表中的 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;

但它没有更新。我收到子查询返回多个值的错误。

最佳答案

既然可以直接执行子查询,为什么还要使用子查询?

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;

有关更多信息,请参阅 UPDATE (Transact-SQL)

关于sql - 如何根据条件从另一个表更新表中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12363047/

相关文章:

java - 插入时如何忽略重复行

mysql - 使用 CASE WHEN 查询

mysql - 用多列mysql更新一列值

sql - 意外表扫描 id != id

mysql - 根据日期和组返回最后 5 个结果

sql-server - 无法使用 EXECUTE AS OWNER 在存储过程中创建登录名?

mysql - 在mysql中增量更新值

php - 网络抓取转化率并绘制图表

来自数据库的 PHP 权限级别

c# - 如何为 Entity Framework Code First 迁移设置隔离级别