Maison >base de données >tutoriel mysql >Comment mettre à jour une colonne NULL dans une table à l'aide des données d'une table associée ?

Comment mettre à jour une colonne NULL dans une table à l'aide des données d'une table associée ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-10 10:03:44187parcourir

How to Update a NULL Column in One Table Using Data from a Related Table?

Mise à jour des colonnes de la base de données : correspondance des valeurs dans les tables associées

La gestion de base de données nécessite souvent la mise à jour d'une colonne dans une table en fonction des données d'une table associée. Ceci est crucial pour l’intégrité des données et la correction des bugs.

Scénario :

Imaginez deux tables : QuestionTrackings et QuestionAnswers.

  • QuestionTrackings :
    • QuestionID (potentiellement NULL)
    • AnswerID
  • QuestionAnswers :
    • AnswerID
    • QuestionID

Un bug a entraîné certaines QuestionTrackings lignes ayant des valeurs NULL QuestionID. Heureusement, les valeurs AnswerID correspondantes ont le QuestionID correct dans le tableau QuestionAnswers. La tâche consiste à remplir les valeurs QuestionID manquantes dans QuestionTrackings.

Solution :

Cela peut être accompli efficacement en utilisant une instruction UPDATE combinée à un 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>
  • Les lignes de liens INNER JOIN avec les valeurs AnswerID correspondantes.
  • SET q.QuestionID = a.QuestionID met à jour QuestionTrackings avec le bon QuestionID de QuestionAnswers.
  • WHERE q.QuestionID IS NULL limite la mise à jour aux lignes avec des valeurs QuestionID manquantes.

Remarques importantes :

  • Vérification : Avant d'exécuter l'instruction UPDATE, il est recommandé d'utiliser une instruction SELECT avec la même JOIN pour prévisualiser les résultats et garantir l'exactitude des données. Confirmez que chaque AnswerID correspond à un seul QuestionID.
  • Mises à jour conditionnelles : Des conditions de clause WHERE supplémentaires peuvent être ajoutées pour des mises à jour plus sélectives (par exemple, WHERE q.QuestionID IS NULL AND q.Status = 'Active').

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn