Maison >base de données >tutoriel mysql >Comment mettre à jour les valeurs vides dans un tableau en fonction d'autres lignes portant le même nom ?

Comment mettre à jour les valeurs vides dans un tableau en fonction d'autres lignes portant le même nom ?

DDD
DDDoriginal
2024-11-17 10:15:041078parcourir

How do I update empty values in a table based on other rows with the same name?

Mettre à jour les lignes avec les données d'autres lignes de la même table

Dans une table avec une clé composite ID et NOM, où les lignes avec le même NOM peut avoir plusieurs valeurs d'ID et des champs VALEUR vides, la tâche consiste à mettre à jour les champs VALEUR vides avec les données d'autres lignes ayant le même NOM valeur.

Requête :

Pour y parvenir, la requête suivante peut être utilisée :

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 :

  • La sous-requête (SELECT DISTINCT ID, NAME, VALUE FROM data_table WHERE VALUE IS NOT NULL AND VALUE != '') récupère des lignes distinctes de la data_table où la colonne VALUE n'est pas vide ou nulle.
  • L'instruction principale UPDATE joint la data_table (alias t) à la sous-requête (alias comme t1) sur les colonnes ID et NAME.
  • Pour chaque ligne correspondante dans les deux tables, la colonne VALEUR dans t est mise à jour avec la VALEUR de t1.

Sortie :

La requête met à jour les champs VALEUR vides avec les valeurs d'autres lignes ayant le même NOM, ce qui donne la sortie souhaitée :

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

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