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

Wie entpivotiere ich Spalten in Zeilen in MySQL?

Linda Hamilton
Freigeben: 2025-01-20 05:41:08
Original
1002 Leute haben es durchsucht

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

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

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

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

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!

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