Mise à jour de plusieurs tables MySQL à l'aide de LEFT JOIN
Dans MySQL, il est possible de mettre à jour simultanément des lignes sur plusieurs tables à l'aide de l'instruction LEFT JOIN. Cela peut être utile lors de la mise à jour des champs d'une table en fonction des résultats d'une jointure avec une autre table.
Considérez le scénario suivant : Supposons que nous ayons deux tables, T1 et T2, et que nous souhaitions mettre à jour toutes les lignes de T1 qui n'ont pas d'enregistrements correspondants dans T2. Pour y parvenir, nous pouvons utiliser la syntaxe suivante :
UPDATE T1 LEFT JOIN T2 ON T1.id = T2.id SET T1.col1 = newvalue WHERE T2.id IS NULL;
Dans cette instruction, l'opération LEFT JOIN crée un jeu de résultats temporaire qui inclut toutes les lignes de T1, qu'elles correspondent ou non aux lignes de T2. La clause WHERE filtre ensuite l'ensemble de résultats pour inclure uniquement les lignes où la ligne correspondante dans T2 n'existe pas (c'est-à-dire où T2.id EST NULL). Enfin, la clause SET met à jour le champ spécifié (T1.col1) à la valeur souhaitée.
Il convient de noter que pour les instructions SELECT, l'utilisation de la syntaxe NOT IN / NOT EXISTS peut être plus efficace que LEFT JOIN. Cependant, MySQL ne permet pas d'utiliser la table cible dans une sous-requête au sein d'une instruction UPDATE, la syntaxe LEFT JOIN reste donc nécessaire pour ce scénario spécifique.
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!