12

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

  1. そこに含まれる学生テーブル (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

4

4 に答える 4

28

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

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

于 2012-09-11T05:13:41.297 に答える
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;
于 2012-09-11T05:10:14.557 に答える
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
于 2012-09-11T05:26:11.410 に答える