Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

黄舟
黄舟Original
2017-03-25 13:26:221277Durchsuche

Der unten stehende Herausgeber bringt Ihnen einen Artikel über MySQL-Methoden zum Konvertieren von Spalten in Zeilen und zum Zusammenführen von Feldern (unbedingt lesen). Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor, um einen Blick darauf zu werfen.

Datentabelle:

Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

Spaltenumschaltung: max (Fall, wenn dann)

max---AggregationFunktionden Maximalwert annehmen

(Fall natürlich, wenn ' Chinesisch', dann Punkte, sonst 0 Ende) ---Urteil

als Sprache---Alias ​​als Spaltenname

SELECT
 `name`,
 MAX(
  CASE 
  WHEN course='语文' THEN
   score
  END
 ) AS 语文,
 MAX(
  CASE 
  WHEN course='数学' THEN
   score
  END
 ) AS 数学, 
 MAX(
  CASE 
  WHEN course='英语' THEN
   score
  END
 ) AS 英语
FROM
 student
GROUP BY `name`
;

Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

Zusammenführungsfeld Anzeige: Unter Verwendung von group_cancat(course,":","score")

SELECT
 `name`,
 GROUP_CONCAT(course, ":", score) AS 成绩
FROM
 student
GROUP BY
 `name`;

Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

group_concat() erklärt das Handbuch: Diese Funktion gibt eine Verbindung mit einer Gruppe zurück String Ergebnis für einen Nicht-NULL-Wert.
Relativ abstrakt und schwer zu verstehen.

Um es auf einfache Weise zu verstehen, ist es tatsächlich so: group_concat() berechnet, welche Zeilen zur gleichen Gruppe gehören und zeigt die Spalten an, die zur gleichen Gruppe gehören. Welche Spalten zurückgegeben werden sollen, wird durch den Funktionsparameter

(d. h. den Feldnamen) bestimmt. Es muss einen Standard für die Gruppierung geben, der auf der Grundlage der durch „group by“ angegebenen Spalte gruppiert.

Die Funktion „group_concat“ sollte die Group-By-Anweisung intern ausführen. Das ist meine Vermutung.

1. Testaussage:

SELECT
 GROUP_CONCAT(`name`)
FROM
 student
GROUP BY
 `name`;

Das Ergebnis ist, herauszufinden, welche Werte im Namen gleich sind gleich, alle Listen Sie sie durch Kommas getrennt wie folgt auf:

group_concat('name')

Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

2. Test:

SELECT
 GROUP_CONCAT(`name`)
FROM
 student
;

Ergebnis:

group_concat('name')

Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

Kann das Obige beweisen, dass group_concat nur dann eine Wirkung haben kann, wenn es zusammen mit der Anweisung „group by“ verwendet wird? Der eigentliche Test wird unten durchgeführt

3. TestKonstante wirkt sich auf die Konfiguration von group_concat() aus:

SET @@GROUP_CONCAT_MAX_LEN=4

Im Handbuch wird erwähnt, dass die Syntax für die Einstellung wie folgt lautet:

SET [SESSION | GLOBAL] group_concat_max_len = val;

Was ist der Unterschied zwischen den beiden?

SET @@global.GROUP_CONCAT_MAX_LEN=4;
global可以省略,那么就变成了:SET @@GROUP_CONCAT_MAX_LEN=4;

4. Verwenden Sie die Anweisung

SELECT
GROUP_CONCAT(`name`)
FROM
student;

, um Folgendes zu erhalten:

group_concat('name')

Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

Fazit: Die Funktion group_concat() muss zusammen mit verwendet werden Gruppieren Sie nach Anweisung, um den gewünschten Effekt zu erzielen.

Der Grund kann wie folgt verstanden werden: group_concat() ruft alle Mitglieder ab, die zur Gruppe x gehören (die Spaltenparameter in der Funktion geben an, welche Felder angezeigt werden müssen). Woher kam Gruppe x?

Wenn keine Gruppe nach angegeben ist, gibt es keine Möglichkeit zu wissen, welche Gruppe group_concat() die Mitglieder entsprechend anzeigt. Wenn daher keine Gruppierungsklausel wie oben vorhanden ist, werden Liu Bei, Guan Yu, Zhang Fei, Liu Bei, Guan Yu, Zhang Fei, Liu Bei, Guan Yu, Zhang Fei angezeigt.

Wann wird diese Funktion eigentlich benötigt?

Wenn Sie eine Abfrage durchführen müssen, sieht das Ergebnis wie folgt aus: Der Gruppenname wird links angezeigt und alle Mitgliedsinformationen der Gruppe werden angezeigt rechts angezeigt. Mit dieser Funktion können Sie viele Dinge sparen.

Außerdem, wenn ich es so verwende:

SELECT
 `name`,
 GROUP_CONCAT(course, ":", score) AS 成绩
FROM
 student
;

Es macht nicht viel Sinn.

group_concat() Die Angabe einer Spalte ist der beste Fall. Wenn mehrere Spalten angegeben sind.

SELECT
 `name`,
 GROUP_CONCAT(course, ":", score) AS 成绩
FROM
 student
GROUP BY
 `name`;

Dann sieht das angezeigte Ergebnis etwa so aus:

group_concat(course,":",score)

Detaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte)

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Methode zum Konvertieren von MySQL-Spalten in Zeilen und zum Zusammenführen von Feldern (Bilder und Texte). 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