Heim > Datenbank > MySQL-Tutorial > Wie entpivotiere ich MySQL-Spalten mithilfe von UNION ALL oder CROSS JOIN in Zeilen?

Wie entpivotiere ich MySQL-Spalten mithilfe von UNION ALL oder CROSS JOIN in Zeilen?

Linda Hamilton
Freigeben: 2025-01-20 05:56:09
Original
650 Leute haben es durchsucht

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

MySQL-Spalten in Zeilen umstrukturieren

Datentransformation ist eine häufige Aufgabe in der Datenbankverwaltung. In MySQL ist die Konvertierung von Spaltendaten in Zeilen – ein Vorgang, der als Unpivoting bezeichnet wird – häufig für eine verbesserte Datenanalyse oder -präsentation erforderlich. Während MySQL über keine dedizierte Unpivot-Funktion verfügt, kann diese Transformation effizient mithilfe einer UNION ALL-Abfrage oder eines CROSS JOIN.

erreicht werden

Die UNION ALLMethode

Eine effektive Strategie verwendet den UNION ALL-Operator:

<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>
Nach dem Login kopieren

Diese Abfrage ruft die Spalte id zusammen mit dem Spaltennamen (col) und dem entsprechenden Wert (value) ab. Das Ergebnis ist ein umstrukturierter Datensatz, bei dem jede Zeile ein einzelnes Spalten-Wert-Paar darstellt.

Der CROSS JOINAnsatz

Alternativ kann ein CROSS JOIN verwendet werden:

<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>
Nach dem Login kopieren

Hier wird yourtable (alias t) mit einer Unterabfrage verbunden, die eine Liste von Spaltennamen (col) generiert. Die CASE-Anweisung wählt dynamisch den entsprechenden Wert basierend auf dem Spaltennamen aus. Das Ergebnis ist, ähnlich wie bei der UNION ALL-Methode, ein abgeflachter Datensatz, wobei jede Zeile das id, den Spaltennamen und den zugehörigen Wert enthält.

Sowohl die UNION ALL- als auch die CROSS JOIN-Technik bieten robuste Lösungen zum Aufheben der Pivotierung von Spalten in MySQL und ermöglichen die Konvertierung von Spaltendaten in Zeilen für die anschließende Verarbeitung oder Visualisierung.

Das obige ist der detaillierte Inhalt vonWie entpivotiere ich MySQL-Spalten mithilfe von UNION ALL oder CROSS JOIN in Zeilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage