Zasadniczo pytanie brzmi: jak to uzyskać:
foo_id nazwa_oooo 1 A. 1 B. 2 C.
do tego:
foo_id nazwa_oooo 1 AB 2 C.
Zasadniczo pytanie brzmi: jak to uzyskać:
foo_id nazwa_oooo 1 A. 1 B. 2 C.
do tego:
foo_id nazwa_oooo 1 AB 2 C.
Odpowiedzi:
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
Z powyższego łącza GROUP_CONCAT
: ta funkcja zwraca wynik łańcucha z połączonymi wartościami innymi niż NULL z grupy. Zwraca NULL, jeśli nie ma wartości innych niż NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Więcej informacji tutaj .
Z powyższego łącza GROUP_CONCAT
: ta funkcja zwraca wynik łańcucha z połączonymi wartościami innymi niż NULL z grupy. Zwraca NULL, jeśli nie ma wartości innych niż NULL.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - W MySQL można uzyskać połączone wartości kombinacji wyrażeń. Aby wyeliminować zduplikowane wartości, użyj klauzuli DISTINCT . Aby posortować wartości w wyniku, użyj klauzuli ORDER BY. Aby sortować w odwrotnej kolejności , dodaj słowo kluczowe DESC (malejąco) do nazwy sortowanej kolumny w klauzuli ORDER BY. Domyślnie jest to kolejność rosnąca; można to wyraźnie określić za pomocą słowa kluczowego ASC. Domyślnym separatorem między wartościami w grupie jest przecinek („,”). Aby jawnie określić separator, użyj SEPARATOR, a następnie dosłowna wartość ciągu, który należy wstawić między wartościami grupy. Aby całkowicie wyeliminować separator, określ SEPARATOR '' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
LUB
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Wynik jest obcięty do maksymalnej długości podanej przez zmienną systemową group_concat_max_len, która ma domyślną wartość 1024 znaków, więc najpierw:
SET group_concat_max_len=100000000;
a następnie na przykład:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
konfiguracji? Bieżące połączenie / sesja, czy wpłynie to na innych klientów?
Świetne odpowiedzi. Miałem również problem z NULLS i udało mi się go rozwiązać, włączając WSPÓŁPRACĘ wewnątrz GROUP_CONCAT. Przykład w następujący sposób:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Mam nadzieję, że to pomaga komuś innemu