Полезные решения, шпаргалки и примеры по html, css, js, jQuery, MySQL, PHP, HostCMS, ssh.
GROUP_CONCAT() эта функция возвращает строку с результатом объедененных ненулевых значений (non-NULL) из группы. Возвращает значение NULL, если нет ненулевых значений.
Например у нас есть слудующие значения в таблице:
mysql> select * from users;
+----+-----------------------+------------+
| id | name | surname |
+----+-----------------------+------------+
| 1 | Иван | Петров |
| 2 | Иван | Иванов |
| 3 | Петр | Первый |
| 4 | Петр | Второй |
| 5 | Семен | Слипаков |
+----+-----------------------+------------+
И нам нужно узнать сколько разновидностей фамилий у имени, т.е. мы группируем по имени и объеденяем поле фамилии и получаем нужный нам результат:
mysql> SELECT name, surname GROUP_CONCAT(DISTINCT surname ORDER BY surname ASC SEPARATOR ', ') AS surname
-> FROM users
-> GROUP BY name;
+----+-----------------------+--------------------+
| id | name | surname |
+----+-----------------------+--------------------+
| 1 | Иван | Иванов, Петров |
| 2 | Петр | Второй, Первый |
| 3 | Семен | Слипаков |
+----+-----------------------+--------------------+
DISTINCT — позволяет выбрать уникальные значения, т.е. без дублей;
ORDER BY column ASC | DESC — позволяет сортировать данные;
SEPARATOR — позволяет разделить данные через нужный делитель, по-умолчанию это запятая без пробела (,)