Maison > base de données > tutoriel mysql > Comment puis-je transposer les valeurs de champ définies par l'utilisateur en SQL ?

Comment puis-je transposer les valeurs de champ définies par l'utilisateur en SQL ?

Susan Sarandon
Libérer: 2025-01-05 02:10:40
original
234 Les gens l'ont consulté

How Can I Transpose User-Defined Field Values in SQL?

Techniques de transposition SQL pour les valeurs de champ définies par l'utilisateur

En SQL, vous pouvez rencontrer des situations dans lesquelles vous devez transposer des données stockées dans des lignes vers former des colonnes. Un tel exemple est lorsque vous avez un tableau comme celui décrit ci-dessous :

================================================
| Id | UserId | FieldName     | FieldValue     |
=====+========+===============+================|
| 1  | 100    | Username      | John Doe       |
|----+--------+---------------+----------------|
| 2  | 100    | Password      | pass123!       |
|----+--------+---------------+----------------|
| 3  | 102    | Username      | Jane           |
|----+--------+---------------+----------------|
| 4  | 102    | Password      | $ecret         |
|----+--------+---------------+----------------|
| 5  | 102    | Email Address | [email protected] |
------------------------------------------------
Copier après la connexion

Pour transposer ces données dans un format où les FieldNames deviennent des en-têtes de colonne et les FieldValues ​​forment les données de ligne correspondantes, vous pouvez exploiter le requête SQL suivante :

  SELECT t.userid
         MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username,
         MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password,
         MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email
    FROM TABLE t
GROUP BY t.userid
Copier après la connexion

Cependant, pour que cette approche fonctionne efficacement, vous devrez définir des instructions CASE pour chaque valeur FieldName attendue. Pour améliorer la flexibilité, envisagez d'implémenter la syntaxe d'instruction préparée (SQL dynamique) de MySQL pour générer dynamiquement ces instructions CASE.

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