Im Grunde genommen stellt sich die Frage, wie man aus dieser Situation herauskommt:
foo\_id foo\_name
1 A
1 B
2 C
dazu:
foo\_id foo\_name
1 A B
2 C
Im Grunde genommen stellt sich die Frage, wie man aus dieser Situation herauskommt:
foo\_id foo\_name
1 A
1 B
2 C
dazu:
foo\_id foo\_name
1 A B
2 C
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat
Aus dem obigen Link, GROUP_CONCAT
: Diese Funktion liefert ein String-Ergebnis mit den verketteten Nicht-NULL-Werten einer Gruppe. Sie gibt NULL zurück, wenn es keine Nicht-NULL-Werte gibt.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Mehr Details aquí .
Aus dem obigen Link, GROUP_CONCAT
: Diese Funktion liefert ein String-Ergebnis mit den verketteten Nicht-NULL-Werten einer Gruppe. Sie gibt NULL zurück, wenn es keine Nicht-NULL-Werte gibt.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
:- In MySQL können Sie die verketteten Werte von Ausdruckskombinationen erhalten . Um doppelte Werte zu eliminieren, verwenden Sie die DISTINCT Klausel. Um die Werte im Ergebnis zu sortieren, verwenden Sie die ORDER BY-Klausel. Zum Sortieren in umgekehrte Reihenfolge fügen Sie die DESC (absteigend) an den Namen der Spalte, nach der Sie in der ORDER BY-Klausel sortieren wollen. Die Standardeinstellung ist aufsteigende Reihenfolge; diese kann explizit mit dem Schlüsselwort ASC angegeben werden. Das Standardtrennzeichen zwischen den Werten in einer Gruppe ist ein Komma (","). Um ein Trennzeichen explizit anzugeben, verwenden Sie SEPARATOR, gefolgt von dem Zeichenfolgenliteral, das zwischen den Gruppenwerten eingefügt werden soll. Um das Trennzeichen ganz zu eliminieren, geben Sie SEPARATOR '' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
O
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Das Ergebnis wird auf die maximale Länge gekürzt, die durch die Systemvariable group_concat_max_len vorgegeben ist, die einen Standardwert von 1024 Zeichen hat, also tun wir das zuerst:
SET group_concat_max_len=100000000;
und dann zum Beispiel:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
Das Ergebnis wird auf die maximale Länge gekürzt, die durch die Systemvariable group_concat_max_len vorgegeben ist, die den Wert Standardwert de 1024 Zeichen. docs
Was ist der Anwendungsbereich dieser group_concat_max_len
Konfiguration? Aktuelle Verbindung/Sitzung, oder werden andere Clients davon betroffen sein?
@FrozenFlame: > Wenn kein Modifikator vorhanden ist, ändert SET die Sitzungsvariable. Wenn die Variable keinen Sitzungswert hat, tritt ein Fehler auf. Von dev.mysql.com/doc/refman/5.7/de/verwendende-system-variablen.html
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
@barlop hat das durch Bearbeiten der Fragen und Antworten behoben.