Maison > base de données > tutoriel mysql > le corps du texte

Comment mettre à jour efficacement plusieurs tables avec des valeurs similaires dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-11-04 00:44:30
original
312 Les gens l'ont consulté

How to Efficiently Update Multiple Tables with Similar Values in MySQL?

Mise à jour de plusieurs tables avec des valeurs similaires dans MySQL

Dans le scénario où vous avez deux tables nécessitant les mêmes mises à jour pour la dénormalisation, vous pouvez utiliser mises à jour multi-tables proposées par MySQL. Cette approche permet des mises à jour simultanées sur plusieurs tables avec une seule instruction.

Pour y parvenir :

  1. Identifiez les colonnes communes : Déterminez quelles colonnes dans les deux tables doivent être mis à jour avec les mêmes valeurs.
  2. Rejoignez les tables : Utilisez un INNER JOIN pour connecter les tables en fonction des colonnes communes (par exemple, ID utilisateur).
  3. Spécifiez les mises à jour : Dans la clause SET, listez les colonnes à mettre à jour et leurs valeurs correspondantes. Assurez-vous que les valeurs sont cohérentes dans les deux tables.
  4. Filtrez les résultats : Ajoutez toutes les conditions nécessaires (par exemple, des clauses WHERE) pour filtrer les lignes spécifiques à mettre à jour.

Par exemple, considérons la requête suivante :

UPDATE Table_One a INNER JOIN Table_Two b ON (a.userid = b.userid)
SET
  a.win = a.win+1, a.streak = a.streak+1, a.score = a.score+200,
  b.win = b.win+1, b.streak = b.streak+1, b.score = b.score+200 
WHERE a.userid = 1 AND a.lid = 1 AND b.userid = 1
Copier après la connexion

Ici, les colonnes de victoire, de séquence et de score des deux tables sont mises à jour de manière incrémentielle pour un identifiant d'utilisateur et une valeur de couvercle spécifiques. Notez que la colonne lid n'est pas présente dans Table_Two, sa valeur n'est donc pas mise à jour.

Considérations supplémentaires :

  • Les mises à jour multi-tables ne prennent pas en charge LIMIT , les mises à jour peuvent donc affecter plus de lignes que prévu.
  • Les procédures ou transactions stockées peuvent offrir un meilleur contrôle dans certaines situations.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal