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 | NOM | VALEUR |
---|---|---|
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 les données 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 :
ID | NOM | 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 au sein du même table qui partage 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. Par conséquent, les cellules vides « VALEUR » sont remplies avec les valeurs correspondantes des lignes non vides avec la même valeur « NOM ».
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3