Fondamentalmente la domanda è come ottenere da questo:
foo_id foo_name 1 A 1 B 2 C.
a questo:
foo_id foo_name 1 AB 2 C.
Fondamentalmente la domanda è come ottenere da questo:
foo_id foo_name 1 A 1 B 2 C.
a questo:
foo_id foo_name 1 AB 2 C.
Risposte:
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
Dal link sopra GROUP_CONCAT
: questa funzione restituisce un risultato di stringa con i valori non NULL concatenati di un gruppo. Restituisce NULL se non ci sono valori non NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Maggiori dettagli qui .
Dal link sopra GROUP_CONCAT
: questa funzione restituisce un risultato di stringa con i valori non NULL concatenati di un gruppo. Restituisce NULL se non ci sono valori non NULL.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - In MySQL, puoi ottenere i valori concatenati delle combinazioni di espressioni. Per eliminare valori duplicati, utilizzare la clausola DISTINCT . Per ordinare i valori nel risultato, utilizzare la clausola ORDER BY. Per ordinare in ordine inverso , aggiungi la parola chiave DESC (decrescente) al nome della colonna per cui stai ordinando nella clausola ORDER BY. L'impostazione predefinita è ordine crescente; questo può essere specificato esplicitamente usando la parola chiave ASC. Il separatore predefinito tra i valori in un gruppo è la virgola (“,”). Per specificare esplicitamente un separatore, utilizzare SEPARATOR seguito dal valore letterale stringa che deve essere inserito tra i valori di gruppo. Per eliminare del tutto il separatore, specificare SEPARATORE '' .
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;
Il risultato viene troncato alla lunghezza massima fornita dalla variabile di sistema group_concat_max_len, che ha un valore predefinito di 1024 caratteri, quindi per prima cosa facciamo:
SET group_concat_max_len=100000000;
e quindi, ad esempio:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
configurazione? Connessione / sessione corrente o interesserà altri client?
Grandi risposte. Ho anche avuto un problema con NULLS e sono riuscito a risolverlo includendo un COALESCE all'interno di GROUP_CONCAT. Esempio come segue:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Spero che questo aiuti qualcun altro