logo

MySQL | Funkcja Group_CONCAT().

Funkcja GROUP_CONCAT() w MySQL służy do łączenia danych z wielu wierszy w jedno pole. Jest to funkcja agregująca (GROUP BY), która zwraca a Strunowy wartość, jeśli grupa zawiera co najmniej jedną nie- ZERO wartość. W przeciwnym razie powraca ZERO .

Składnia:



SELECT col1, col2, ..., colN GROUP_CONCAT ( [DISTINCT] col_name1  [ORDER BY clause] [SEPARATOR str_val] )  FROM table_name GROUP BY col_name2;>

Parametry:

  • col1, col2, ...colN: To są nazwy kolumn tabeli.
  • nazwa_kolumny1: Kolumna tabeli, której wartości są łączone w jednym polu dla każdej grupy.
  • Nazwa tabeli: Nazwa tabeli.
  • nazwa_kolumny2: Kolumna tabeli, według której przeprowadzane jest grupowanie.

Użycie różnych klauzul wewnątrz GRUPA_CONCAT() funkcjonować

  • Odrębny: Eliminuje to powtarzanie wartości z wyniku.
  • Zamów przez: Sortuje wartości grupy w określonej kolejności, a następnie łączy je.
  • Separator: Domyślnie wartości grupy są oddzielone znakiem ( , ) operatora. Aby zmienić tę wartość separatora, używana jest klauzula Separator, po której następuje literał łańcuchowy. Podaje się jako Separator „str_value” .

Przykłady:

Rozważmy tabelę Pracowników:



em_id imię Imię id_działu wytrzymałość
1 mukesz gupta 2 Przywództwo
3 neelam Sharma 3 Pracowity, ciężka praca
1 mukesz gupta 2 Odpowiedzialny
2 Dewesz tyagi 2 Punktualność
3 neelam Sharma 3 Samozmotywowany
1 mukesz gupta 2 Szybko się uczy
4 keszaw singal 3 Słuchający
2 Dewesz tyagi 2 Szybko się uczy
5 zapytać Jain 1 Pracowity, ciężka praca
4 keszaw singal 3 Krytyczne myślenie
5 zapytać Jain 1 Zorientowani na cel

Zapytanie

1. Użycie prostej funkcji GROUP_CONCAT() –

SELECT emp_id, fname, lname, dept_id,  GROUP_CONCAT ( strength ) as 'strengths'  FROM employee  GROUP BY fname;>

Wyjście

em_id imię Imię id_działu silne strony
1 mukesz gupta 2 Przywództwo, Odpowiedzialność, Szybko się uczę
2 Dewesz tyagi 2 Punktualność, szybko się uczę
3 neelam Sharma 3 Pracowity, zmotywowany
4 keszaw singal 3 Słuchanie, krytyczne myślenie
5 zapytać Jain 1 Pracowity, zorientowany na cel

2. Stosowanie klauzuli DISTINCT –

Zapytanie

SELECT dept_id,  GROUP_CONCAT ( DISTINCT strength) as 'employees strengths'  FROM employee  GROUP BY dept_id;>

Wyjście

id_działu mocne strony pracowników
1 Zorientowany na cel, pracowity
2 Przywództwo, Punktualność, Szybko się uczę, Odpowiedzialność
3 Krytyczne myślenie, pracowitość, słuchanie, motywacja

3. Zastosowanie klauzuli ORDER BY –



Zapytanie

SELECT dept_id,  GROUP_CONCAT ( DISTINCT emp_id ORDER BY emp_id SEPARATOR ', ') as 'employees ids'  FROM employee  GROUP BY dept_id;>

Tutaj, Separator „,” oddzieli wartości przecinkiem ( , ) i znak odstępu.

Wyjście

id_działu identyfikatory pracowników
1 5
2 1, 2
3 3. 4

Jak połączyć wiele wierszy różnych kolumn w jednym polu?

Do tej pory widzieliśmy użycie funkcji GROUP_CONCAT() do grupowania wartości wielu wierszy należących do tej samej kolumny. Ale używając połączyć() i group_concat() razem, możemy połączyć wartości więcej niż jednej kolumny z różnych wierszy w jedno pole.

Przykład:
Biorąc pod uwagę pracownika z powyższej tabeli, jeśli chcemy znaleźć siłę pracowników wraz z identyfikatorem pracownika w drugim zapytaniu, to jest to zapisane jako-

SELECT dept_id, GROUP_CONCAT ( strengths SEPARATOR ' ') as 'emp-id : strengths' FROM (   SELECT dept_id, CONCAT ( emp_id, ':', GROUP_CONCAT(strength SEPARATOR', ') )   as 'strengths'   FROM employee   GROUP BY emp_id  ) as emp  GROUP BY dept_id;>

Wyjaśnienie:
Powyższe zapytanie składa się z dwóch WYBIERZ instrukcje wewnętrzną i zewnętrzną.

Wewnętrzna instrukcja SELECT-

Zapytanie

SELECT dept_id, concat ( emp_id, ':', GROUP_CONCAT ( strength separator ', ' ) ) as 'strengths'  FROM employee  GROUP BY dept_id, emp_id>

Pogrupuje wiersze tabeli pracowników według emp_id. Pierwsza kolumna wyświetla dept_id, druga kolumna wyświetla emp_id wraz z listą ich mocnych stron.

Wyjście dla wewnętrznej instrukcji SELECT-

id_działu silne strony
2 1: Przywództwo, Odpowiedzialność, Szybko się uczę
2 2: Punktualność, Szybko się uczę
3 3: Pracowity, zmotywowany
3 4: Słuchanie, krytyczne myślenie
1 5: Pracowity, zorientowany na cel

Zewnętrzna instrukcja SELECT będzie teraz grupować te wiersze według dept_id.

Wyjście

id_działu em-id: mocne strony
1 5: Pracowity, zorientowany na cel
2 1: Przywództwo, Odpowiedzialność, Szybko się uczy 2: Punktualność, Szybko się uczy
3 3: Pracowity, zmotywowany. 4: Słuchanie, Krytyczne myślenie

Notatka: Wynik funkcji GROUP_CONCAT() jest obcinany do maksymalnej długości, tj 1024 która jest podana przez zmienną systemową group_concat_max_len . Jednakże wartość zmiennej group_concat_max_len można zmienić w czasie wykonywania za pomocą USTAWIĆ polecenie jako-

SET [GLOBAL | SESSION] group_concat_max_len = value;   value:   It is the new value set to the variable.>