我有两张桌子
我想根据学校代码和年份使用学校代码表中的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;
但它没有更新。我收到subquery returns more than one value
的错误。
答案 0 :(得分:16)
为什么要在直接执行此操作时使用子查询?
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)
答案 1 :(得分:3)
UPDATE Master.Student
SET school_code = sc.school_id
FROM Master.school as sc
WHERE school_code = sc.school_code
AND year = x
AND st.year = x;
答案 2 :(得分:1)
尝试此查询
UPDATE student SET school_code = c.school_id
FROM student t
INNER JOIN school c
ON t.school_code = c.school_code AND t.year = c.year
WHERE c.year=x
答案 3 :(得分:-1)
Update Table B set column name (of table b) =x.column name (from Table A) from
(
Select column name from Table A a,Table B b
where a.Column name=b.column name
)x
where Table b.Column name=x.Column name(of Table b)