MySQL-Konvertierung von Spalten in Zeilen, Methode zum Zusammenführen von Feldern (unbedingt lesen)

MySQL-Konvertierung von Spalten in Zeilen, Methode zum Zusammenführen von Feldern (unbedingt lesen)

Datenblatt:

Von Spalte zu Zeile: mit max(case when then)

max --- Aggregatfunktion nimmt den Maximalwert

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

als Sprache --- Alias ​​als Spaltenname

WÄHLEN
 `Name`,
 MAX(
  FALL 
  WENN Kurs = 'Chinesisch' DANN
   Punktzahl
  ENDE
 ) AS Sprache,
 MAX(
  FALL 
  WENN Kurs = 'Mathematik' DANN
   Punktzahl
  ENDE
 ) AS Mathematik, 
 MAX(
  FALL 
  WENN Kurs = 'Englisch' DANN
   Punktzahl
  ENDE
 ) AS Englisch VON
 Student
GRUPPE NACH `Name`
; 

Seriendruckfeldanzeige: Verwenden Sie group_cancat(course,":","score")

WÄHLEN
 `Name`,
 GROUP_CONCAT(Kurs, ":", Punktzahl) AS Punktzahl FROM
 Student
GRUPPELN NACH
 `Name`; 

group_concat(), im Handbuch heißt es: Diese Funktion gibt ein String-Ergebnis mit nicht-NULL-Werten aus einer Gruppenverbindung zurück.
Es ist relativ abstrakt und schwer zu verstehen.

Einfach ausgedrückt berechnet group_concat(), welche Zeilen zur selben Gruppe gehören, und zeigt die Spalten an, die zur selben Gruppe gehören. Welche Spalten zurückgegeben werden, wird durch die Funktion bestimmt

Die Anzahl der Parameter (also der Feldname) ist ausschlaggebend. Es muss ein Standard für die Gruppierung vorhanden sein, d. h. eine Gruppierung gemäß der durch „group by“ angegebenen Spalte.

Ich vermute, dass die Funktion group_concat die Group-By-Anweisung intern ausführen sollte.

1. Testanweisung:

WÄHLEN
 GROUP_CONCAT(`Name`)
AUS
 Student
GRUPPELN NACH
 `Name`;

Das Ergebnis besteht darin, herauszufinden, welche Werte im Namen gleich sind. Wenn sie gleich sind, listen Sie sie alle auf, getrennt durch Kommas, wie folgt:

group_concat('Name')

2. Prüfung:

WÄHLEN
 GROUP_CONCAT(`Name`)
AUS
 Student
;

Ergebnis:

group_concat('Name')

Kann bewiesen werden, dass group_concat nur wirksam ist, wenn es mit einer group by-Anweisung verwendet wird? Das Folgende ist ein praktischer Test

3. Testen Sie die Auswirkung von Konstanten auf die Konfiguration von group_concat():

Setzen Sie @@GROUP_CONCAT_MAX_LEN=4

Im Handbuch heißt es, dass die Syntax für die Einstellung wie folgt lautet:

SET [SESSION | GLOBAL] group_concat_max_len = Wert;

Was ist der Unterschied zwischen den beiden?

Setzen Sie @@global.GROUP_CONCAT_MAX_LEN=4;
global kann weggelassen werden, dann wird es: SET @@GROUP_CONCAT_MAX_LEN=4;

4. Verwenden Sie Aussagen

WÄHLEN
GROUP_CONCAT(`Name`)
AUS
Student;

Das Ergebnis ist:

group_concat('Name')

Fazit: Die Funktion group_concat() muss zusammen mit der Group-by-Anweisung verwendet werden, um den gewünschten Effekt zu erzielen.

Der Grund dafür ist wie folgt zu verstehen: group_concat() ruft alle Mitglieder ab, die zur Gruppe x gehören (die Spaltenparameter in der Funktion geben an, welche Felder angezeigt werden sollen). Woher kommt Gruppe X?

Wenn keine Gruppierung nach angegeben ist, ist nicht bekannt, welche Gruppe group_concat() zum Anzeigen der Mitglieder verwenden wird. Wenn oben also keine „Group By“-Klausel vorhanden ist, wird 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?

Angenommen, das Abfrageergebnis lautet wie folgt: Der Gruppenname wird links angezeigt und alle Mitgliedsinformationen unter der Gruppe werden rechts angezeigt. Die Nutzung dieser Funktion kann Ihnen viel Ärger ersparen.

Außerdem, wenn ich verwende:

WÄHLEN
 `Name`,
 GROUP_CONCAT(Kurs, ":", Punktzahl) AS Punktzahl FROM
 Student
;

Es macht nicht viel Sinn.

Die Angabe einer einzelnen Spalte ist der beste Ansatz für group_concat(). Wenn mehrere Spalten angegeben sind.

WÄHLEN
 `Name`,
 GROUP_CONCAT(Kurs, ":", Punktzahl) AS Punktzahl FROM
 Student
GRUPPELN NACH
 `Name`;

Das angezeigte Ergebnis sieht dann ungefähr so ​​aus:

group_concat(Kurs,":",Punktzahl)

Der obige Artikel zum Konvertieren von Spalten in Zeilen und Zusammenführungsfeldern in MySQL (unbedingt lesen) ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, er kann Ihnen als Referenz dienen, und ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • So teilen und führen Sie mehrere Werte in einem einzigen Feld in MySQL zusammen
  • Implementierungsschritte für MySQL-Zusammenführungsergebnisse und horizontale Spleißfelder
  • Analyse der MySQL Union Merge-Abfragedaten und der Verwendung von Tabellenalias und Feldalias
  • Gruppenzeichenzusammenführung SQL-Anweisung führt eine der Zeichenfolgen nach einem bestimmten Feld zusammen (einfache Zusammenführung)
  • Ein Beispiel für das Zusammenführen eines Feldwertes in SQL Server
  • So führen Sie zwei Felder in MySQL zusammen
  • SQL-Funktion zum Zusammenführen eines Feldes

<<:  Eine kurze Analyse, wie Sie das Root-Passwort in Linux suse11 ändern können, wenn Sie es vergessen haben

>>:  Schnelle Deinstallation und Installation der Knotenumgebung eines Linux-Servers (einfacher Einstieg)

Artikel empfehlen

Perfekte Lösung zur vertikalen Zentrierung von Formelementen

Code kopieren Der Code lautet wie folgt: <!DOC...

Nginx-Reverseproxy und Lastausgleichspraxis

Reverse-Proxy Unter Reverse-Proxy versteht man de...

Lösung für den Fehler „MySQL-Server ist verschwunden“

MySQL-Server hat Problem in PHP behoben 1. Hinter...

JavaScript implementiert coole Mouse-Tailing-Effekte

Nachdem Sie sich das angesehen haben, garantiere ...

N Möglichkeiten, adaptive Teiler geschickt mit CSS zu implementieren

Trennlinien sind eine gängige Gestaltungsart auf ...

Nginx-Zugriffssteuerungs- und Parameteroptimierungsmethoden

Globale Nginx-Variablen Es gibt viele globale Var...

So fügen Sie in MySQL 8.0 schnell Spalten hinzu

Vorwort: Ich habe vor langer Zeit gehört, dass My...

Importieren von CSS-Dateien unter Verwendung von Beurteilungsbedingungen

Lösung 1: Verwenden Sie bedingten Import im HTML-...

Analyse und Behandlung von Bildlaufleisten in HTML und eingebettetem Flash

Bei der Entwicklung begegnen wir häufig dieser Sit...