Detaillierte Erklärung der MySQL-Zeichenfolgenverkettungsfunktion GROUP_CONCAT

Detaillierte Erklärung der MySQL-Zeichenfolgenverkettungsfunktion GROUP_CONCAT

Im vorherigen Artikel habe ich ein tabellenübergreifendes Update geschrieben. Als ich das von mir geschriebene SQL sah, kam ich mir wie ein Idiot vor und schrieb über tabellenübergreifende Updates. Ein Jahr verging wie im Flug, und auch die beiden Mitarbeiter馮大und馮二, die später in diesem Artikel dazukamen, mussten sich der gnadenlosen KPI-Bewertung stellen. Sie machten ihre Sache gut und erreichten Leistungsbewertungen von 4 bzw. 5.

Es kommen neue Anforderungen, und zwar leise! ! ! Der Leiter möchte sehen, wer sich unter der jeweiligen Vorstellung verbirgt und verlangt gleichzeitig, dass die Namen dieser Personen durch Kommata zu einer Zeichenfolge aneinandergereiht werden, also folgendes Ergebnis erhalten:

Wie verketten Sie Zeichenfolgen für eine bestimmte Spalte im Ergebnissatz? Der Protagonist strahlt hell✨

GROUP_CONCAT(Ausdruck)

In der offiziellen MySQL-Dokumentation steht diese Funktion im Abschnitt „Aggregatfunktionen“. Wenn Sie nach einem bestimmten Feld gruppieren und verketten möchten, müssen Sie sie mit dem Schlüsselwort GROUP BY verwenden.

Definition

Die Funktion gibt ein String-Ergebnis zurück, das die Verkettung der非NULL值durch Gruppierung darstellt. Wenn kein Wert ungleich NULL vorhanden ist, wird NULL zurückgegeben. Die vollständige Syntax lautet wie folgt:
GROUP_CONCAT([DISTINCT] Ausdruck [,Ausdruck ...]
       [ORDER BY {unsigned_integer | Spaltenname | Ausdruck}
         [ASC | DESC] [,Spaltenname ...]]
       [SEPARATOR str_val])

Was? Diese Syntax sieht zu kompliziert aus. Keine Sorge. Ich werde sie anhand von Beispielen Schritt für Schritt erklären und überprüfen.

Anwendungsfälle

Erfüllen Sie zunächst die Voraussetzungen am Anfang des Artikels:

SELECT Leistung, GROUP_CONCAT(Mitarbeitername) AS Mitarbeiter
VON Mitarbeitern
GROUP BY-Leistung;

Zou ist das Ergebnis:

Zu diesem Zeitpunkt sind die vom Leiter gestellten Anforderungen erfüllt 😜

Bleiben Sie bitte, mein Herr. Die von Ihnen bestellten Gerichte wurden noch nicht serviert …

Wir sind ein internationales Team, unsere Heimatstädte sind auf der ganzen Welt

Der Leiter möchte sich um seine Mitarbeiter kümmern und möchte überprüfen, wo die Heimatorte aller Mitarbeiter im Unternehmen liegen. Da die Mitarbeiter möglicherweise vom selben Ort kommen, ist das Schlüsselwort DISTINCT praktisch, um Duplikate aus dem Ergebnissatz zu entfernen.

Wählen Sie GROUP_CONCAT (DISTINCT Heimatstadt)
VON Mitarbeitern;

Schauen wir uns die Ergebnisse an:

Die Fürsorge der Führungskräfte ist überall ...

Das Copywriting muss geändert werden. Die Sorgfalt des Leiters ist四海五湖, daher ist ORDER BY praktisch.

SELECT GROUP_CONCAT(DISTINCT Heimatstadt ORDER BY Heimatstadt DESC) AS 'Leitungspflegebereich'
VON Mitarbeitern;

-- Niemand verwendet Variablen wie ich, und es ist Chinesisch. Ich glaube, Sie sind verrückt. 

Hier können Sie sehen, dass das Standardtrennzeichen für die Funktion GROUP_CONCAT ein Komma ist , Der Chef ist unglücklich und das Komma ist kein guter Ausdruck. Sie müssen ❕ verwenden, um die starke Fürsorge auszudrücken. SEPARATOR ist praktisch.

Das Standardtrennzeichen zwischen gruppierten Werten ist ein Komma (,). Um das Trennzeichen explizit anzugeben, verwenden Sie das Schlüsselwort SEPARATOR , gefolgt von dem Trennzeichen, das Sie festlegen möchten. Um das Trennzeichen vollständig zu entfernen, schreiben Sie einfach '' nach SEPARATOR .
SELECT GROUP_CONCAT(DISTINCT Heimatstadt ORDER BY Heimatstadt DESC SEPARATOR '!') AS 'Leitungspflegeregion'
VON Mitarbeitern;

SELECT GROUP_CONCAT(DISTINCT Heimatstadt SEPARATOR '') AS 'Leitungspflegebereich'
VON Mitarbeitern;

Das ist ziemlich fürsorglich, oder? Denken Sie gut darüber nach! ! !

Auch die Fürsorgefähigkeit des Leiters ist begrenzt. Die standardmäßige maximale Länge der verketteten Zeichenfolge beträgt 1024 Zeichen. Sie können die aktuelle Beschränkung durch die folgende Anweisung einsehen:

Variablen wie „group_concat_max_len“ anzeigen;

Die Fähigkeiten einer Führungskraft sind unbeständig, daher können wir diesen Wert flexibel festlegen.

SETZEN [GLOBAL | SESSION] group_concat_max_len = Wert;

SESSION: gültig für die aktuelle Sitzung GLOBAL: global gültig

Nachdem diese Anweisung ausgeführt wurde, bleibt sie wirksam, bis MySQL neu gestartet wird. Nach dem Neustart von MySQL wird der Standardwert wiederhergestellt.

Manchmal muss GROUP_CONCAT() mit CONCAT_WS() verwendet werden, um etwas mehr Leistung zu erzielen. Hier ist ein einfaches Beispiel:

Trennen Sie den Vor- und Nachnamen des Verbrauchers mit einem Komma und dann mit einem ;
WÄHLEN
  GROUP_CONCAT(
    CONCAT_WS(', ', KontaktNachname, KontaktVorname)
    TRENNZEICHEN ';')
AUS
  Kunden;

Hier ist die Verwendung der Funktion CONCAT_WS(). Sie ist sehr einfach. Probieren Sie es selbst aus ...

Hinweis ⚠️

Die Funktion GROUP_CONCAT() gibt eine einzelne Zeichenfolge zurück, keine Werteliste. Dies bedeutet, dass wir das Ergebnis der Funktion GROUP_CONCAT() nicht in einem IN-Operator verwenden können, beispielsweise in einer Unterabfrage wie folgt:

WÄHLEN
  ID, Name
AUS
  Tabellenname
WO
  Ich würde in GROUP_CONCAT(Ich würde);

Zusammenfassen

In vielen Fällen können wir mit der Funktion GROUP_CONCAT() nützliche Ergebnisse erzielen. Wir können sie auch mit anderen Funktionen kombinieren, um eine höhere Leistung zu erzielen.

Das könnte Sie auch interessieren:
  • Implementierungsschritte für MySQL-Zusammenführungsergebnisse und horizontale Spleißfelder
  • Mysql implementiert drei Funktionen zum Feldspleißen
  • Detailliertes Beispiel für die Verkettung mehrerer Felder in MySQL

<<:  Allgemeines Startskriptbeispiel für ein Linux-Java-Programm

>>:  Tutorial zur Installation von Ubuntu 20.04 und NVIDIA-Treibern

Artikel empfehlen

Beispiele für vertikale Raster und progressiven Zeilenabstand

Neue Fragen Kommen und gehen Sie in Eile. Seit de...

So erstellen Sie ein responsives Säulendiagramm mit dem CSS-Rasterlayout

Ich spiele jetzt schon eine Weile mit Diagrammen ...

So verwenden Sie JS WebSocket zur Implementierung eines einfachen Chats

Inhaltsverzeichnis Kurze Umfrage Langfristige Abf...

Beispiel zum Anzeigen und Ändern der MySQL-Transaktionsisolationsebene

Überprüfen Sie die Transaktionsisolationsebene In...

Spezifische Verwendung von Linux which Befehl

Oft möchten wir in Linux eine Datei finden, wisse...

Mehrere Möglichkeiten zur Lösung von CSS-Stilkonflikten (Zusammenfassung)

1. Verfeinern Sie den Selektor Durch die Verwendu...

Beispiele für die Verwendung von Docker und Docker-Compose

Docker ist eine Open-Source-Container-Engine, mit...