Heim >Backend-Entwicklung >PHP-Tutorial >Konvertierungsmethode für MySQL-Tabellendatenzeilen und -spalten

Konvertierungsmethode für MySQL-Tabellendatenzeilen und -spalten

jacklove
jackloveOriginal
2018-06-15 17:47:402988Durchsuche

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.

1. Zeilen in Spalten konvertieren

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

2. Spaltenkonvertierung


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,&#39;,&#39;,b.category_id),&#39;,&#39;,-1) as name from `option2` as ajoin `option2` as b on b.category_id<=(length(a.name) - length(replace(a.name,&#39;,&#39;,&#39;&#39;))+1)order by a.category_id,b.category_id;


Ausführungsergebnis:

mysql> select a.category_id,substring_index(substring_index(a.name,&#39;,&#39;,b.category_id),&#39;,&#39;,-1) as name from `option2` as a    -> join `option2` as b on b.category_id<=(length(a.name) - length(replace(a.name,&#39;,&#39;,&#39;&#39;))+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!

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