Frage

Im Grunde ist die Frage, wie man von diesem zu erhalten:

id    string
1          A
1          B
2          C

folgt aus:

id    string
1          A B
2          C
War es hilfreich?

Lösung

SELECT id, GROUP_CONCAT(string SEPARATOR ' ') FROM table GROUP BY id;

http: // dev. mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

Von dem obigen Link, GROUP_CONCAT: Diese Funktion liefert ein String Ergebnis mit den verketteten Nicht-NULL-Werten aus einer Gruppe. Es gibt NULL zurück, wenn es keine nicht-NULL-Werte sind.

Andere Tipps

SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id

Weitere Details hier .

Von dem obigen Link, GROUP_CONCAT: Diese Funktion liefert ein String Ergebnis mit den verketteten Nicht-NULL-Werten aus einer Gruppe. Es gibt NULL zurück, wenn es keine nicht-NULL-Werte sind.

SELECT id, GROUP_CONCAT(CAST(string as CHAR)) FROM table GROUP BY id

geben Sie eine durch Kommata getrennte Zeichenfolge

SET group_concat_max_len=100000000
SELECT id, GROUP_CONCAT(string SEPARATOR ' ') FROM table GROUP BY id;

: - In MySQL können Sie die verketteten Werte Ausdruckskombinationen erhalten . Zur Beseitigung doppelte Werte, verwenden Sie die DISTINCT Klausel. So sortieren Sie Werte im Ergebnis, verwenden Sie die ORDER BY-Klausel. So sortieren Sie in umgekehrter Reihenfolge , fügen Sie die DESC (absteigend) Stichwort auf den Namen der Spalte, die Sie durch in der ORDER BY-Klausel zu sortieren. Der Standard ist aufsteigende Reihenfolge; Dies kann explizit mit dem Schlüsselwort ASC angegeben werden. Die Standard-Trennzeichen zwischen Werten in einer Gruppe ist, Komma ( „“). Um eine Trenn explizit anzugeben, verwenden SEPARATOR vom Stringliteral Wert folgt, der zwischen Gruppenwerte eingefügt werden soll. Zur Beseitigung insgesamt den Separator, geben Sie SEPARATOR '' .

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;

Große Antworten. Ich hatte auch ein Problem mit NULLS und schaffte es zu lösen, indem ein COALESCE innerhalb des GROUP_CONCAT einschließlich. Beispiel wie folgt:

SELECT id, GROUP_CONCAT(COALESCE(string,'') SEPARATOR ' ') 
FROM table 
GROUP BY id;

Hope, das hilft jemand anderes

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top