Grundsätzlich stellt sich die Frage, wie man daraus kommt:
foo_id foo_name 1 A. 1 B. 2 C.
dazu:
foo_id foo_name 1 AB 2 C.
Grundsätzlich stellt sich die Frage, wie man daraus kommt:
foo_id foo_name 1 A. 1 B. 2 C.
dazu:
foo_id foo_name 1 AB 2 C.
Antworten:
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/de/group-by-functions.html#function_group-concat
Über den obigen Link GROUP_CONCAT
: Diese Funktion gibt ein Zeichenfolgenergebnis mit den verketteten Nicht-NULL-Werten einer Gruppe zurück. Es gibt NULL zurück, wenn keine Nicht-NULL-Werte vorhanden sind.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Weitere Details hier .
Über den obigen Link GROUP_CONCAT
: Diese Funktion gibt ein Zeichenfolgenergebnis mit den verketteten Nicht-NULL-Werten einer Gruppe zurück. Es gibt NULL zurück, wenn keine Nicht-NULL-Werte vorhanden sind.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - In MySQL können Sie die verketteten Werte von Ausdruckskombinationen abrufen. Verwenden Sie die DISTINCT- Klausel, um doppelte Werte zu entfernen . Verwenden Sie die ORDER BY-Klausel, um Werte im Ergebnis zu sortieren. Um in umgekehrter Reihenfolge zu sortieren , fügen Sie das Schlüsselwort DESC (absteigend) zum Namen der Spalte hinzu, nach der Sie in der ORDER BY-Klausel sortieren. Die Standardeinstellung ist aufsteigende Reihenfolge. Dies kann explizit mit dem Schlüsselwort ASC angegeben werden. Das Standardtrennzeichen zwischen Werten in einer Gruppe ist Komma (","). Um ein Trennzeichen explizit anzugeben, verwenden Sie SEPARATOR, gefolgt von dem Zeichenfolgenliteralwert, der zwischen Gruppenwerten eingefügt werden soll. Geben Sie SEPARATOR '' an, um das Trennzeichen vollständig zu entfernen .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
ODER
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 von der Systemvariablen group_concat_max_len angegeben wird, die einen Standardwert von 1024 Zeichen hat. Wir machen also zuerst Folgendes:
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
group_concat_max_len
Konfiguration? Aktuelle Verbindung / Sitzung oder wirkt sich dies auf andere Clients aus?
Tolle Antworten. Ich hatte auch ein Problem mit NULLS und konnte es lösen, indem ich eine COALESCE in die GROUP_CONCAT einfügte. Beispiel wie folgt:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Hoffe das hilft jemand anderem