Używam GROUP_CONCAT()
w zapytaniu MySQL do konwersji wielu wierszy w pojedynczy ciąg. Jednak maksymalna długość wyniku tej funkcji to 1024
znaki.
Jestem bardzo świadomy, że mogę zmienić parametry, group_concat_max_len
aby zwiększyć ten limit:
SET SESSION group_concat_max_len = 1000000;
Jednak na serwerze, którego używam, nie mogę zmienić żadnego parametru. Nie przy użyciu poprzedniego zapytania ani edycji pliku konfiguracyjnego.
Więc moje pytanie brzmi: czy jest jakiś inny sposób, aby uzyskać wynik zapytania z wielu wierszy w jednym ciągu?
mysql
group-concat
ZeWaren
źródło
źródło
SET
instrukcji do zmiany zmiennej sesji?Odpowiedzi:
jest tymczasowym ustawieniem zakresu sesji. Dotyczy to tylko bieżącej sesji. Powinieneś jej używać w ten sposób.
Możesz to zrobić nawet podczas udostępniania hostingu, ale gdy korzystasz z innej sesji, musisz powtórzyć
SET SESSION
polecenie.źródło
SET GLOBAL group_concat_max_len=6999
Prawidłowy parametr do ustawienia maksymalnej długości to:
value_numeric
musi być> 1024; domyślniegroup_concat_max_len
wartość wynosi 1024.źródło
group_concat_max_len
tak niskie, jak 4 . ( mysql docs ). W tym przypadku ma miejsce „value_numeric
musi być> = 4”. Użyłem tego do przetestowania, co się stanie, gdy przekroczyszgroup_concat_max_len
wartość.SET
zapytanie nie wpłynie na ustawienia po ponownym uruchomieniu.Uwzględnij to ustawienie w pliku konfiguracyjnym xampp my.ini:
Następnie uruchom ponownie xampp mysql
źródło
Możesz tego spróbować
źródło
Prawidłowa składnia to mysql>
SET @@global.group_concat_max_len = integer;
Jeśli nie masz uprawnień, aby to zrobić na serwerze, na którym znajduje się baza danych, użyj zapytania typu:
mySQL =
"SET @@session.group_concat_max_len = 10000;"
lub innej wartości.Następny wiersz:
SET objRS = objConn.Execute(mySQL)
twoje zmienne mogą być inne.następnie
mySQL="SELECT GROUP_CONCAT(......);"
itp.Używam ostatniej wersji, ponieważ nie mam uprawnień do zmiany wartości domyślnej 1024 na całym świecie (przy użyciu cPanel).
Mam nadzieję że to pomoże.
źródło
To zapytanie jest nieco dziwne, ale nie wymaga innego zapytania do zainicjowania zmiennej; i może być osadzony w bardziej złożonym zapytaniu. Zwraca wszystkie pola „2” oddzielone średnikiem.
źródło