Heim >Backend-Entwicklung >PHP-Tutorial >Konvertierungsmethode für MySQL-Tabellendatenzeilen und -spalten
Während des Entwicklungsprozesses ist es aus historischen Gründen oder aus Leistungsgründen erforderlich, die Spaltendaten der Tabelle in Zeilendaten umzuwandeln oder die Zeilendaten zur Verwendung in Spaltendaten umzuwandeln Zeilen und Zeilen von MySQL-Tabellendaten und Bereitstellung vollständiger Demonstrationsbeispiele und SQL-Kenntnisse.
Testdatentabelle und -daten erstellen
CREATE TABLE `option` ( `category_id` int(10) unsigned NOT NULL COMMENT '分类id', `name` varchar(20) NOT NULL COMMENT '名称', KEY `category_id` (`category_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `option` (`category_id`, `name`) VALUES (1, '大'), (1, '中'), (1, '小'), (2, '奔驰'), (2, '宝马'), (3, '2015'), (3, '2016'), (3, '2017'), (3, '2018'), (4, '1m'), (4, '2m');mysql> select * from `option`; +-------------+--------+| category_id | name | +-------------+--------+| 1 | 大 | | 1 | 中 | | 1 | 小 | | 2 | 奔驰 | | 2 | 宝马 | | 3 | 2015 | | 3 | 2016 | | 3 | 2017 | | 3 | 2018 | | 4 | 1m || 4 | 2m | +-------------+--------+
Erwarten Sie nach dem Konvertieren von Zeilen in Spalten Das folgende Ergebnis
+-------------+---------------------+| category_id | name | +-------------+---------------------+| 1 | 大,中,小 | | 2 | 奔驰,宝马 | | 3 | 2015,2016,2017,2018 || 4 | 1m,2m | +-------------+---------------------+
Zeile in Spalte kann mit der Funktion group_concat() in Kombination mit group by implementiert werden.
Die Funktion group_concat() kann den Verbindungswert der Ausdruckskombination abrufen. Das Standardtrennzeichen ist Komma, das über Trennzeichen auf andere Trennzeichen festgelegt werden kann.
Hinweis: Die Funktion group_concat() hat eine Längenbeschränkung für das zurückgegebene Ergebnis. Der Standardwert beträgt 1024 Bytes, reicht aber für normale Situationen aus.
Informationen zur Verwendung der Funktion group_concat() finden Sie in meinem vorherigen Artikel: „Anleitung zur Verwendung der MySQL-Funktionen concat und group_concat“
Ausführungsergebnisse:
mysql> select category_id,group_concat(name) as name from `option` group by category_id order by category_id; +-------------+---------------------+| category_id | name | +-------------+---------------------+| 1 | 大,中,小 | | 2 | 奔驰,宝马 | | 3 | 2015,2016,2017,2018 || 4 | 1m,2m | +-------------+---------------------+
Testdatentabelle und -daten erstellen
CREATE TABLE `option2` ( `category_id` int(10) unsigned NOT NULL COMMENT '分类id', `name` varchar(100) NOT NULL COMMENT '名称集合') ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `option2` (`category_id`, `name`) VALUES (1, '大,中,小 '), (2, '奔驰,宝马'), (3, '2015,2016,2017,2018'), (4, '1m,2m');mysql> select * from `option2`; +-------------+---------------------+| category_id | name | +-------------+---------------------+| 1 | 大,中,小 | | 2 | 奔驰,宝马 | | 3 | 2015,2016,2017,2018 || 4 | 1m,2m | +-------------+---------------------+
Erwarten Sie nach der Konvertierung von Spalten in Zeilen die folgenden Ergebnisse
+-------------+--------+| category_id | name | +-------------+--------+| 1 | 大 | | 1 | 中 | | 1 | 小 | | 2 | 奔驰 | | 2 | 宝马 | | 3 | 2015 | | 3 | 2016 | | 3 | 2017 | | 3 | 2018 | | 4 | 1m || 4 | 2m | +-------------+--------+
Die Konvertierung von Spalten in Zeilen ist komplizierter als die Konvertierung von Zeilen in Spalten. Bei Daten, deren Spalteninhalt durch Trennzeichen getrennt ist, gilt: Wir können substring_index() verwenden. Die Funktion teilt die Ausgabe und kombiniert sie mit Kartesischem Produkt, um die Schleife zu implementieren.
select a.category_id,substring_index(substring_index(a.name,',',b.category_id),',',-1) as name from `option2` as ajoin `option2` as b on b.category_id<=(length(a.name) - length(replace(a.name,',',''))+1)order by a.category_id,b.category_id;
Ausführungsergebnis:
mysql> select a.category_id,substring_index(substring_index(a.name,',',b.category_id),',',-1) as name from `option2` as a -> join `option2` as b on b.category_id<=(length(a.name) - length(replace(a.name,',',''))+1) -> order by a.category_id,b.category_id; +-------------+--------+| category_id | name | +-------------+--------+| 1 | 大 | | 1 | 中 | | 1 | 小 | | 2 | 奔驰 | | 2 | 宝马 | | 3 | 2015 | | 3 | 2016 | | 3 | 2017 | | 3 | 2018 | | 4 | 1m || 4 | 2m | +-------------+--------+
In diesem Artikel wird die Methode zum Konvertieren von Zeilen und Spalten von MySQL-Tabellendaten erläutert Inhalt, bitte achten Sie auf PHP Chinese Net.
Verwandte Empfehlungen:
So zeigen Sie Konfigurationsdateien in Nginx schnell an
php Mehrere eindimensionale Zahlen werden zu kombiniert zwei Methoden für dimensionale Arrays
PHP-Methoden zur Rückgabe mehrerer angegebener Spalten im Array
Das obige ist der detaillierte Inhalt vonKonvertierungsmethode für MySQL-Tabellendatenzeilen und -spalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!