MySQL unterstützt die Konvertierung von Zeilendaten in Spaltendaten, sodass neue Spalten bei Bedarf dynamisch hinzugefügt werden können. Dieser Prozess wird oft mit Pivot-Tabellen in Verbindung gebracht, die Daten in einem benutzerfreundlicheren und tabellarischen Format darstellen. Um diese Konvertierung zu erreichen, können Sie die Funktionen GROUP BY
und MAX
verwenden.
Das Folgende ist ein Beispiel mit Tabelle A und Tabelle B:
<code>表 A +--+-----+----+ |id|order|data| +--+-----+----+ |1 |1 |P | +--+-----+----+ |2 |2 |Q | +--+-----+----+ |2 |1 |R | +--+-----+----+ |1 |2 |S | +--+-----+----+ 表 B +--+----+----+ |id|name|value| +--+----+----+ |1 |name1|data1| +--+----+----+ |1 |name2|data2| +--+----+----+ |2 |name1|data3| +--+----+----+ |2 |name2|data4| +--+----+----+</code>
Um diese Datenstruktur in eine Tabelle mit Zeilen und Spalten umzuwandeln, können Sie die folgende Abfrage verwenden:
<code class="language-sql">SELECT ID, MAX(IF(`order` = 1, data, NULL)) AS data1, MAX(IF(`order` = 2, data, NULL)) AS data2 FROM TableA GROUP BY ID</code>
Die Ausgabe dieser Abfrage lautet:
<code>+--+-----+-----+ |id|data1|data2| +--+-----+-----+ |1 |P |S | +--+-----+-----+ |2 |R |Q | +--+-----+-----+</code>
Wie Sie sehen können, wurde jede Zeile in Tabelle B in eine Spalte in der resultierenden Tabelle umgewandelt.
Wenn Ihre Daten mehrere Werte für dasselbe „Bestell“-Feld enthalten, können Sie dynamisches SQL kombinieren, um die Transformation effizienter durchzuführen. Bei dieser Methode werden Abfragen dynamisch generiert, die auf verschiedenen Werten des Felds „Bestellung“ basieren:
<code class="language-sql">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>
Der Vorteil dieses dynamischen SQL-Ansatzes besteht darin, dass die Abfrage nicht jedes Mal manuell geändert werden muss, wenn ein neuer Wert zum Feld „Bestellung“ hinzugefügt wird.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich Zeilen dynamisch in Spalten in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!