Mise à jour des lignes avec les données des frères et sœurs de la même table
Imaginez une table avec une structure ressemblant à ceci :
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | NULL |
4 | Test | NULL |
1 | Test3 | VALUE3 |
Votre tâche consiste à remplir les cellules NULL "VALUE" avec des données provenant d'autres lignes portant le même "NOM" (c'est-à-dire que "Test" et "Test2" doivent hériter des valeurs de leurs prédécesseurs). Le résultat souhaité est le suivant :
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
Le défi réside dans le référencement des lignes d'un même tableau qui partagent une valeur "NOM" spécifique. La solution consiste à utiliser une instruction JOIN :
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
Dans cette instruction, la sous-requête (T1) extrait des lignes distinctes avec des valeurs "VALUE" non NULL et non vides. La requête principale (t) rejoint ensuite cette sous-requête sur les champs "ID" et "NAME" pour identifier les lignes à mettre à jour. En conséquence, les cellules vides « VALEUR » sont remplies avec les valeurs correspondantes des lignes non vides avec la même valeur « NOM ».
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!