Maison > base de données > tutoriel mysql > 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 ?

Barbara Streisand
Libérer: 2024-11-13 05:51:02
original
322 Les gens l'ont consulté

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'un tableau

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 du même tableau. Prenons un tableau 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 |
Copier après la connexion

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 != '' 
Copier après la connexion

Cette requête identifie et met à jour les champs VALUE vides (où dt1.VALUE est vide) avec des VALEURS non vides de d'autres lignes avec le même NOM (où dt2.VALUE n'est pas vide).

Comme alternative, nous pouvons utiliser un sous-requête pour identifier les lignes avec des VALEURS non vides et les joindre à 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
Copier après la connexion

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 |
Copier après la connexion

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

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal