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