Konvertierungsmethode für MySQL-Tabellendatenzeilen und -spalten

jacklove
Freigeben: 2023-04-01 12:24:02
Original
2940 Leute haben es durchsucht

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

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


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

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

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


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


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

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!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage