分かりやすく説明できたかと思いますので、詳しく説明します。
クイズ プログラムの追跡データの表があり、各行には次の内容が含まれています。
QuestionID と AnswerID (それぞれにテーブルがあります)。バグのため、多数の QuestionID が NULL に設定されていましたが、関連する AnswerID の QuestionID は Answers テーブルにありました。
たとえば、QuestionID が NULL で AnswerID が 500 の場合、Answers テーブルに移動して AnswerID 500 を見つけると、NULL 値があるはずの QuestionID の列が見つかります。
したがって、基本的には、各 NULL QuestionID を、追跡テーブルにある AnswerID の Answer 行 (書き込まれている NULL QuestionID と同じ行) の Answers テーブルにある QuestionID と等しくなるように設定したいと思います。
どうすればいいでしょうか?
UPDATE QuestionTrackings
SET QuestionID = (need some select query that will get the QuestionID from the AnswerID in this row)
WHERE QuestionID is NULL AND ... ?
一致する AnswerID の QuestionID に QuestionID を割り当てる方法がわかりません...
ベストアンサー1
update QuestionTrackings q
inner join QuestionAnswers a
on q.AnswerID = a.AnswerID
set q.QuestionID = a.QuestionID
where q.QuestionID is null -- and other conditions you might want
更新を実行する前に、更新する結果セットを確認することをお勧めします (同じクエリですが、選択のみ)。
select *
from QuestionTrackings q
inner join QuestionAnswers a
on q.AnswerID = a.AnswerID
where q.QuestionID is null -- and other conditions you might want
特に、各回答 ID に関連付けられた質問 ID が 1 つだけであるかどうか。