Maison >base de données >tutoriel mysql >Comment puis-je mettre à jour plusieurs tables MySQL à l'aide d'un LEFT JOIN ?

Comment puis-je mettre à jour plusieurs tables MySQL à l'aide d'un LEFT JOIN ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 12:37:11818parcourir

How Can I Update Multiple MySQL Tables Using a LEFT JOIN?

Mise à jour de plusieurs tables à l'aide de LEFT JOIN dans MySQL

MySQL permet aux utilisateurs d'effectuer des mises à jour multi-tables à l'aide de différents types de jointures, notamment LEFT JOIN . Cependant, la syntaxe de telles mises à jour peut être insaisissable.

Syntaxe de mise à jour de plusieurs tables avec LEFT JOIN

Pour mettre à jour plusieurs tables à l'aide de LEFT JOIN, la syntaxe suivante peut être employé :

UPDATE  t1
LEFT JOIN
        t2
ON      t2.id = t1.id
SET     t1.col1 = newvalue
WHERE   t2.id IS NULL

Dans ce syntaxe :

  • t1 et t2 représentent les tables en cours de mise à jour.
  • La clause LEFT JOIN ​​établit une relation entre les tables en fonction de la condition (t2.id = t1.id dans ce exemple).
  • La clause SET précise les colonnes et leurs nouvelles valeurs à mettre à jour dans la table cible t1.
  • La La clause WHERE filtre les lignes de l'ensemble de résultats joint en fonction d'un critère. Dans ce cas, elle identifie les lignes de t1 qui n'existent pas dans t2 (t2.id EST NULL).

Considérations relatives aux performances

Il est important de noter que les mises à jour de LEFT JOIN sont moins efficaces que l'utilisation de Syntaxe NOT IN ​​pour sélectionner les données. Une meilleure approche pour identifier efficacement les commandes incomplètes, par exemple, consiste à utiliser la syntaxe suivante :

SELECT  t1.*
FROM    t1
WHERE   t1.id NOT IN
        (
        SELECT  id
        FROM    t2
        )

Cependant, pour les instructions UPDATE, MySQL n'autorise pas l'utilisation de la table cible dans une sous-requête. Par conséquent, la syntaxe LEFT JOIN, moins efficace, doit être utilisée pour les mises à jour multi-tables.

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