Heim > Datenbank > MySQL-Tutorial > Wie kann man in MySQL Zeilen dynamisch in Spalten umwandeln?

Wie kann man in MySQL Zeilen dynamisch in Spalten umwandeln?

Patricia Arquette
Freigeben: 2025-01-14 10:00:45
Original
271 Leute haben es durchsucht

How to Dynamically Pivot Rows into Columns in MySQL?

Kenntnisse zur dynamischen Zeilen- und Spaltenkonvertierung in MySQL

In MySQL kann die dynamische Konvertierung von Zeilen in Spalten und das dynamische Hinzufügen von Spalten zur Aufnahme neuer Zeilen mithilfe verschiedener Techniken erreicht werden.

Verwenden Sie die Funktionen GROUP BY und MAX

Eine Möglichkeit besteht darin, die Funktionen GROUP BY und MAX zu verwenden. Betrachten Sie beispielsweise eine Tabelle mit Zeilen und Spalten wie folgt:

<code>表A

+--+-----+----+
| id | order | data |
+--+-----+----+
| 1  | 1    | P    |
| 2  | 2    | Q    |
| 2  | 1    | R    |
| 1  | 2    | S    |
+--+-----+----+</code>
Nach dem Login kopieren

Um diese Zeilen in Spalten umzuwandeln, können Sie die folgende Abfrage verwenden:

<code>SELECT  ID,
        MAX(IF(`order` = 1, data, NULL)) data1,
        MAX(IF(`order` = 2, data, NULL)) data2
FROM    TableA
GROUP   BY ID</code>
Nach dem Login kopieren

Diese Abfrage gruppiert die Zeilen basierend auf der ID-Spalte und gibt den entsprechenden Wert für jede Bestellspalte mithilfe von MAX- und IF-Anweisungen zurück. Das Ergebnis wird sein:

<code>+--+-----+-----+
| id | data1 | data2 |
+--+-----+-----+
| 1  | P    | S    |
| 2  | R    | Q    |
+--+-----+-----+</code>
Nach dem Login kopieren

Verwenden Sie dynamisches SQL

Wenn die Bestellspalte mehrere Werte enthält, ist es möglicherweise besser geeignet, dynamisches SQL zu verwenden. Dadurch können Abfragen dynamisch generiert und unterschiedliche Bestellmengen berücksichtigt werden.

<code>SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(`order` = ', `order`, ',data,NULL)) AS data', `order`)
  ) INTO @sql
FROM TableName;

SET @sql = CONCAT('SELECT  ID, ', @sql, ' 
                  FROM    TableName
                  GROUP   BY ID');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;</code>
Nach dem Login kopieren

Durch die dynamische Generierung von Abfragen basierend auf unterschiedlichen Bestellwerten bietet dieser Ansatz Flexibilität und stellt sicher, dass sich die Ergebnistabelle automatisch an alle Änderungen in den Daten anpasst.

Das obige ist der detaillierte Inhalt vonWie kann man in MySQL Zeilen dynamisch in Spalten umwandeln?. 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