Maison >base de données >tutoriel mysql >Comment annuler le pivotement des colonnes MySQL en lignes à l'aide de UNION ALL ou CROSS JOIN ?

Comment annuler le pivotement des colonnes MySQL en lignes à l'aide de UNION ALL ou CROSS JOIN ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-20 05:56:09654parcourir

How to Unpivot MySQL Columns into Rows Using UNION ALL or CROSS JOIN?

Restructuration des colonnes MySQL en lignes

La transformation des données est une tâche courante dans la gestion de bases de données. Dans MySQL, la conversion des données de colonne en lignes (un processus appelé non-pivot) est souvent nécessaire pour améliorer l'analyse ou la présentation des données. Bien que MySQL ne dispose pas d'une fonction de non-pivot dédiée, cette transformation peut être réalisée efficacement à l'aide d'une requête UNION ALL ou d'un CROSS JOIN.

La UNION ALLMéthode

Une stratégie efficace emploie l'opérateur UNION ALL :

<code class="language-sql">SELECT id, 'a' AS col, a AS value
FROM yourtable
UNION ALL
SELECT id, 'b' AS col, b AS value
FROM yourtable
UNION ALL
SELECT id, 'c' AS col, c AS value
FROM yourtable;</code>

Cette requête récupère la colonne id à côté du nom de la colonne (col) et de sa valeur correspondante (value). Le résultat est un ensemble de données restructuré où chaque ligne représente une seule paire colonne-valeur.

L'CROSS JOINApproche

Alternativement, un CROSS JOIN peut être utilisé :

<code class="language-sql">SELECT t.id,
       c.col,
       CASE c.col
           WHEN 'a' THEN a
           WHEN 'b' THEN b
           WHEN 'c' THEN c
       END AS data
FROM yourtable t
CROSS JOIN
(
  SELECT 'a' AS col
  UNION ALL SELECT 'b'
  UNION ALL SELECT 'c'
) c;</code>

Ici, yourtable (alias t) est joint à une sous-requête qui génère une liste de noms de colonnes (col). L'instruction CASE sélectionne dynamiquement la valeur appropriée en fonction du nom de la colonne. Le résultat, tout comme la méthode UNION ALL, est un ensemble de données aplati avec chaque ligne contenant le id, le nom de la colonne et sa valeur associée.

Les techniques UNION ALL et CROSS JOIN fournissent des solutions robustes pour les colonnes non pivotantes dans MySQL, permettant la conversion de données en colonnes en lignes pour un traitement ou une visualisation ultérieure.

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