web-dev-qa-db-ja.com

条件に基づいて別のテーブルからテーブルの列を更新するにはどうすればよいですか?

私は2つのテーブルを持っています

  1. 含まれているstudentテーブル(Student_id、school_code、name、year、...)
  2. 含まれている学校のテーブル(school_id、School_code、School_name、yearなど.....)

学校コードと年に基づいて、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のエラーが発生します。

9
Pavi

直接実行できるのに、なぜサブクエリを使用するのですか?

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) を参照してください。

17
hims056
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;
3

このクエリを試してください

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
1
Nitesh