Maison > base de données > tutoriel mysql > Comment puis-je mettre à jour efficacement plusieurs tables MySQL avec des valeurs identiques ?

Comment puis-je mettre à jour efficacement plusieurs tables MySQL avec des valeurs identiques ?

DDD
Libérer: 2024-11-04 05:29:29
original
840 Les gens l'ont consulté

How can I efficiently update multiple MySQL tables with identical values?

Mises à jour simultanées sur plusieurs tables MySQL

Lorsque vous travaillez avec plusieurs tables qui nécessitent des mises à jour de valeurs identiques à des fins de dénormalisation, il peut être inefficace d'effectuer mises à jour distinctes sur chaque table. Heureusement, MySQL fournit une méthode pour combiner ces mises à jour en une seule opération à l'aide d'une mise à jour multi-tables.

Considérez le scénario suivant :

<code class="sql">-- Table One Update
UPDATE Table_One
SET win = win+1, streak = streak+1, score = score+200
WHERE userid = 1 AND lid = 1 LIMIT 1

-- Table Two Update
UPDATE Table_Two
SET win = win+1, streak = streak+1, score = score+200
WHERE userid = 1 LIMIT 1</code>
Copier après la connexion

Dans cet exemple, les deux tables nécessitent la même les valeurs sont mises à jour, à l'exception de l'absence du champ « couvercle » dans le tableau deux. Pour combiner ces mises à jour, nous pouvons utiliser une mise à jour multi-tables comme suit :

<code class="sql">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</code>
Copier après la connexion

Dans cette requête, nous utilisons l'instruction "INNER JOIN" pour joindre les deux tables sur la colonne "userid", en garantissant que seules les lignes correspondantes sont mises à jour. La clause "SET" définit les valeurs de mise à jour pour les deux tables.

Il est important de noter que les mises à jour multi-tables ne prennent pas en charge la clause "LIMIT", cela pourrait donc potentiellement mettre à jour plus de lignes que prévu. Dans de tels cas, envisagez d'utiliser des procédures ou des transactions stockées pour un contrôle plus granulaire sur les mises à jour.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal