データベース列の更新: 関連テーブル間での値の一致
データベース管理では、多くの場合、関連テーブルのデータに基づいて 1 つのテーブルの列を更新する必要があります。 これは、データの整合性とバグ修正にとって非常に重要です。
シナリオ:
QuestionTrackings
と QuestionAnswers
という 2 つのテーブルを想像してください。
QuestionTrackings
:QuestionID
(NULL の可能性があります)AnswerID
QuestionAnswers
:AnswerID
QuestionID
バグにより、一部の QuestionTrackings
行に NULL QuestionID
値が含まれるようになりました。 幸いなことに、対応する AnswerID
値には、QuestionID
テーブル内に正しい QuestionAnswers
があります。 タスクは、欠落している QuestionID
値を QuestionTrackings
.
解決策:
これは、UPDATE
ステートメントと INNER JOIN
:
<code class="language-sql">UPDATE QuestionTrackings AS q INNER JOIN QuestionAnswers AS a ON q.AnswerID = a.AnswerID SET q.QuestionID = a.QuestionID WHERE q.QuestionID IS NULL;</code>
INNER JOIN
は、一致する AnswerID
値を持つ行をリンクします。SET q.QuestionID = a.QuestionID
は、QuestionTrackings
からの正しい QuestionID
で QuestionAnswers
を更新します。WHERE q.QuestionID IS NULL
は、QuestionID
値が欠落している行への更新を制限します。重要な注意事項:
UPDATE
ステートメントを実行する前に、同じ SELECT
を持つ JOIN
ステートメントを使用して結果をプレビューし、データの正確性を確認することをお勧めします。 各 AnswerID
が単一の QuestionID
にマッピングされていることを確認します。WHERE
句条件を追加できます (例: WHERE q.QuestionID IS NULL AND q.Status = 'Active'
)。以上が関連テーブルのデータを使用して 1 つのテーブルの NULL 列を更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。