


Comment mettre à jour les valeurs vides dans un tableau en fonction des données d'autres lignes portant le même nom ?
Nov 13, 2024 am 05:51 AMCopie 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 |
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 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
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 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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
