DOWNVOTE to naprawdę mylące nazywanie ciągu kolumny, nadając mu nazwę, która wygląda jak typ danych. Tak więc wpływa to również na wszystkie odpowiedzi, ponieważ wyglądają, jakby określały typ danych, gdy określają nazwę kolumny
barlop
2
@barlop naprawił to, edytując pytania i odpowiedzi.
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.
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.
: - 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 '' .
Rezultatem jest obcinany do długości maksymalnej, która jest podana przez group_concat_max_len zmiennej systemowej, która ma wartość domyślną z 1024 znaków. docs
marlo
Jaki jest zakres tej group_concat_max_lenkonfiguracji? Bieżące połączenie / sesja, czy wpłynie to na innych klientów?
To nie odpowiada na pytanie PO, a jedynie dodaje pomocnych informacji. To powinien być komentarz, a nie odpowiedź.
Sean the Bean,
1
Dziękujemy za ten fragment kodu, który może zapewnić pewną ograniczoną, natychmiastową pomoc. Właściwe wyjaśnienie byłoby znacznie poprawić swoją długoterminową wartość pokazując dlaczego jest to dobre rozwiązanie problemu i byłoby bardziej użyteczne dla czytelników przyszłości z innymi, podobnymi pytaniami. Proszę edytować swoją odpowiedź dodać kilka wyjaśnień, w tym założeń już wykonanych.
Kaczor Donald
11
Ś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:
Odpowiedzi:
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.źródło
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.źródło
Otrzymasz ciąg rozdzielany przecinkami
źródło
: - 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 '' .
LUB
źródło
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:
a następnie na przykład:
źródło
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:
Mam nadzieję, że to pomaga komuś innemu
źródło