Maison >base de données >tutoriel mysql >Comment mettre à jour les valeurs des lignes du tableau à partir des lignes correspondantes dans le même tableau ?

Comment mettre à jour les valeurs des lignes du tableau à partir des lignes correspondantes dans le même tableau ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-18 01:38:02500parcourir

How to Update Table Row Values from Matching Rows in the Same Table?

Mettre à jour les valeurs des lignes du tableau à partir des lignes correspondantes dans le même tableau

Dans une situation où une table contient des identifiants non uniques et des clés composites requises pour l'unicité des lignes, la mise à jour des valeurs des lignes à l'aide des données d'autres lignes de la même table peut poser un défi. Considérons le scénario suivant :

Étant donné un tableau contenant les données suivantes :

ID NAME VALUE
1 Test VALUE1
2 Test2 VALUE2
1 Test2
4 Test
1 Test3 VALUE3

L'objectif est de mettre à jour les valeurs de « Test2 » et « Test » avec les données d'autres lignes avec le même 'NOM' (l'ID n'est pas unique pour l'identification des lignes). Le résultat attendu devrait être :

ID NAME VALUE
1 Test VALUE1
2 Test2 VALUE2
1 Test2 VALUE2
4 Test VALUE1
1 Test3 VALUE3

Pour relever ce défi, vous pouvez exploiter la requête suivante :

UPDATE data_table dt1, data_table dt2
SET dt1.VALUE = dt2.VALUE
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''

Cette requête s'appuie sur deux instances de la même table (data_table alias dt1 et dt2) pour comparer les données et identifier les lignes éligibles aux mises à jour :

  • La clause WHERE filtre les lignes où dt1.NAME correspond à dt2.NAME, indiquant les lignes avec la même valeur 'NAME'.
  • Il vérifie également les lignes où dt1.VALUE est vide (''), ce qui signifie les enregistrements qui nécessitent des mises à jour.
  • Enfin, dt2.VALUE n'est pas vide, garantissant que les mises à jour ne se produisent qu'à partir de lignes avec des valeurs valides.

Comme En conséquence, la requête met à jour les valeurs de dt1 avec les données correspondantes de dt2, remplissant ainsi les cellules vides dans les lignes où le « NOM » correspond. Cette approche permet des mises à jour transparentes des valeurs de ligne au sein de la même table, résolvant ainsi le défi initial.

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