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
DDDoriginal
2024-11-04 05:29:29816parcourir

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>

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>

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:
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