"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment mettre à jour les valeurs vides dans un tableau en fonction des données d'autres lignes portant le même nom ?

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

Publié le 2024-11-16
Parcourir:455

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

Copie de données entre les lignes d'une table

Dans la gestion de bases de données, il est souvent nécessaire de mettre à jour les lignes en fonction des données d'autres lignes de la table. même tableau. Considérons une table avec les colonnes ID, NAME et VALUE qui contiennent des valeurs NAME en double, comme suit :

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

Supposons que nous souhaitions mettre à jour les champs VALUE vides dans les lignes avec des valeurs NAME en double. Pour y parvenir, nous pouvons utiliser des requêtes SQL qui référencent et mettent à jour les valeurs dans la même table.

Une approche consiste à utiliser une instruction UPDATE avec une jointure. Dans la requête suivante, nous joignons la data_table deux fois, en les alias dt1 et dt2 :

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 identifie et met à jour les champs VALUE vides (où dt1.VALUE est vide) avec des champs non vides VALEURS d'autres lignes avec le même NOM (où dt2.VALUE n'est pas vide).

Comme alternative, nous pouvons utiliser une sous-requête pour identifier les lignes avec des VALEURS non vides et joignez-les à la table d'origine pour la mise à jour :

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

Ces deux requêtes donneront le résultat souhaité :

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

Ces approches offrent une certaine flexibilité dans la manipulation des données dans un tableau, vous permettant de mettre à jour les valeurs en fonction de critères incluant d'autres lignes du même tableau.

Dernier tutoriel Plus>

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