SQL UPDATE SET 1 つの列を、別の列によって参照される関連テーブルの値と等しくなるようにするには? 質問する

SQL UPDATE SET 1 つの列を、別の列によって参照される関連テーブルの値と等しくなるようにするには? 質問する

分かりやすく説明できたかと思いますので、詳しく説明します。

クイズ プログラムの追跡データの表があり、各行には次の内容が含まれています。

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 つだけであるかどうか。

おすすめ記事