私は2つのテーブルを持っています
学校コードと年に基づいて、studentテーブルのschool_code列を学校コードテーブルのschool_id列で更新したいと思います。私は5年間のデータを持っています。したがって、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
のエラーが発生します。
直接実行できるのに、なぜサブクエリを使用するのですか?
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;
詳細については、 PDATE(Transact-SQL) を参照してください。
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;
このクエリを試してください
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