MySQL : Mettre à jour la valeur de la colonne en fonction des données d'une autre table
Question :
Supposons qu'il existe deux tables avec des structures similaires :
id | name | value |
---|---|---|
1 | Joe | 22 |
2 | Derk | 30 |
La tâche consiste à mettre à jour la colonne « valeur » du tableau B avec la valeur du tableau A en fonction de la valeur « nom » correspondante.
Solution :
Vous pouvez utiliser l'instruction SQL UPDATE avec une clause JOIN pour effectuer cette opération de mise à jour. Voici une requête possible :
<code class="language-sql">UPDATE tableB INNER JOIN tableA ON tableB.name = tableA.name SET tableB.value = tableA.value;</code>
Cette requête mettra à jour la colonne « valeur » de toutes les lignes du tableau B qui correspondent au tableau A, en fonction de la colonne « nom ».
Mise à jour de la valeur dynamique :
Vous pouvez modifier la requête pour mettre à jour dynamiquement la table B.value en fonction des valeurs de la table A.value. Par exemple, la requête suivante ne met à jour la table B.value que si la table A.value est supérieure à 0 :
<code class="language-sql">UPDATE tableB INNER JOIN tableA ON tableB.name = tableA.name SET tableB.value = IF(tableA.value > 0, tableA.value, tableB.value) WHERE tableA.name = 'Joe';</code>
Dans cet exemple, la colonne « valeur » dans la ligne avec « nom » « Joe » dans le tableau B sera mise à jour avec la valeur du tableau A uniquement si la valeur du tableau A est supérieure à 0. Sinon, les valeurs existantes dans le tableau B resteront inchangées.
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!