Heim >Datenbank >MySQL-Tutorial >Wie entpivotiere ich Spalten in Zeilen in MySQL?

Wie entpivotiere ich Spalten in Zeilen in MySQL?

Linda Hamilton
Linda HamiltonOriginal
2025-01-20 05:41:081003Durchsuche

How to Unpivot Columns into Rows in MySQL?

Tricks zum Konvertieren von Spalten in Zeilen in MySQL

Wenn Sie in MySQL mit spaltenorganisierten Daten arbeiten, müssen Sie diese möglicherweise in ein Format konvertieren, das die Daten in Zeilen darstellt. Dieser Vorgang wird als Unpivoting bezeichnet.

Frage:

Betrachten Sie das folgende Formular:

<code>ID | a  | b  | c 
1  | a1 | b1 | c1
2  | a2 | b2 | c2</code>

Das Ziel besteht darin, Spalten in Zeilen umzuwandeln, um eine Tabelle mit der folgenden Struktur zu erhalten:

<code>ID | 值 | 列名
1  | a1 | a
1  | b1 | b
1  | c1 | c
2  | a2 | a
2  | b2 | b
2  | c2 | c</code>

Lösung:

Im Gegensatz zu einigen anderen Datenbanken verfügt MySQL nicht über eine integrierte Entladefunktion. Um die gewünschten Ergebnisse zu erhalten, können Sie die Abfrage UNION ALL verwenden, um separate Abfragen zu kombinieren, die jede Spalte selektiv in Zeilen umwandeln:

<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 generiert drei Datensätze: einen für jede Spalte. Jede Gruppe enthält die ID, den Spaltennamen und den entsprechenden Wert.

Verwenden Sie CROSS JOIN:

Eine andere Möglichkeit ist die Verwendung von CROSS JOIN:

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

In diesem Fall erstellt CROSS JOIN ein kartesisches Produkt zwischen den Zeilen von yourtable und den Zeilen der Unterabfrage, die die Spaltennamen generiert. Die CASE-Anweisung ordnet jeden Spaltennamen dem entsprechenden Spaltenwert zu.

Beide Methoden entschlüsseln die Daten effektiv und geben Ihnen die gewünschte zeilenbasierte Struktur.

Das obige ist der detaillierte Inhalt vonWie entpivotiere ich Spalten in Zeilen in MySQL?. 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