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
Linda HamiltonOriginal
2025-01-20 05:56:09651Durchsuche

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>

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>

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!

Stellungnahme:
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