列から行への更新
今度は先ほどの逆パターンを考えます。つまり、
ScoreCols:列持ち
student_ | score_ | score_ | score_ |
---|---|---|---|
A001 | 100 | 58 | 90 |
B002 | 77 | 60 | |
C003 | 52 | 49 | |
D004 | 10 | 70 | 100 |
student_ | subject | score |
---|---|---|
A001 | 英語 | |
A001 | 国語 | |
A001 | 数学 | |
B002 | 英語 | |
B002 | 国語 | |
C001 | 英語 | |
C003 | 国語 | |
C003 | 社会 |
student_ | subject | score |
---|---|---|
A001 | 英語 | 100 |
A001 | 国語 | 58 |
A001 | 数学 | 98 |
B002 | 英語 | 77 |
B002 | 国語 | 60 |
C001 | 英語 | 52 |
C003 | 国語 | 49 |
C003 | 社会 |
「C003」
今度は、
UPDATE ScoreRows
SET score = (SELECT CASE ScoreRows.subject
WHEN '英語' THEN score_en
WHEN '国語' THEN score_nl
WHEN '数学' THEN score_mt
ELSE NULL
END
FROM ScoreCols
WHERE student_id = ScoreRows.student_id);
演習問題
さて、
問題1. いまScoreRowsテーブルのscoreはNULLを許可していますが、
問題2. リスト8では、