# GROUP\_CONCAT

У MySQL для збереження списку значень у вигляді рядка, розділеного комами або іншими роздільниками, можна використовувати функцію `GROUP_CONCAT`. Ця функція об'єднує значення з декількох рядків у один рядок з вказаним роздільником.

#### Приклад використання `GROUP_CONCAT`

**Синтаксис**

```sql
GROUP_CONCAT([DISTINCT] expr [ORDER BY ...] [SEPARATOR str])
```

* `DISTINCT`: Унікальні значення.
* `expr`: Вираз для об'єднання.
* `ORDER BY`: Сортування значень перед об'єднанням.
* `SEPARATOR str`: Вказує роздільник. За замовчуванням використовується кома.

**Приклад**

Припустимо, у вас є таблиця `employees` з наступними даними:

| id | name  |
| -- | ----- |
| 1  | Alice |
| 2  | Bob   |
| 3  | Carol |

Ви хочете об'єднати імена всіх працівників у один рядок, розділений комами.

```sql
SELECT GROUP_CONCAT(name) AS employee_list FROM employees;
```

Результат:

| employee\_list  |
| --------------- |
| Alice,Bob,Carol |

**Використання іншого роздільника**

Якщо ви хочете використовувати інший роздільник, наприклад, крапку з комою:

```sql
SELECT GROUP_CONCAT(name SEPARATOR '; ') AS employee_list FROM employees;
```

Результат:

| employee\_list    |
| ----------------- |
| Alice; Bob; Carol |

**Використання з умовами та сортуванням**

Ви можете додати умови та сортування до запиту:

```sql
SELECT GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ', ') AS employee_list
FROM employees WHERE id < 3;
```

Результат:

| employee\_list |
| -------------- |
| Alice, Bob     |

#### Виключення дублікатів за допомогою DISTINCT:

```sql
SELECT GROUP_CONCAT(DISTINCT name) AS names_list FROM employees;
```

Цей запит об'єднає всі унікальні значення стовпця name.

#### Висновок

Функція `GROUP_CONCAT` є потужним інструментом для об'єднання значень з кількох рядків у один рядок з вказаним роздільником. Це особливо корисно для створення списків значень у одному полі або для об'єднання даних з декількох рядків у зручному форматі.

## Як зберегти результат запиту у змінну

[Дивись тут](../query_to_variable)
