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
776 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!

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