Copier des données dans une table
Dans une base de données relationnelle, il est souvent utile de copier des données d'une ligne à une autre au sein d'une même table. Cet article explore une méthode pour mettre à jour la valeur d'une ligne en utilisant les données d'une ligne différente dans le même tableau.
Considérons un tableau avec la structure suivante :
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | |
4 | Test | |
1 | Test3 | VALUE3 |
L'objectif est de mettre à jour le valeurs pour les lignes avec des valeurs manquantes dans la colonne "VALEUR" en récupérant la valeur d'une autre ligne avec le même "NOM". Le résultat attendu :
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
La solution implique une auto-jointure. En utilisant une table temporaire pour stocker uniquement les lignes non nulles, nous pouvons mettre à jour la table d'origine :
UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE FROM data_table WHERE VALUE IS NOT NULL AND VALUE != '') t1 SET t.VALUE = t1.VALUE WHERE t.ID = t1.ID AND t.NAME = t1.NAME
Explication :
Requête mise à jour :
La solution fournie peut être affinée pour obtenir l'objectif souhaité sortie :
UPDATE data_table dt1, data_table dt2 SET dt1.VALUE = dt2.VALUE WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
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!