В основному питання полягає в тому, як отримати від цього:
foo_id foo_name 1 А 1 Б 2 С
до цього:
foo_id foo_name 1 AB 2 С
В основному питання полягає в тому, як отримати від цього:
foo_id foo_name 1 А 1 Б 2 С
до цього:
foo_id foo_name 1 AB 2 С
Відповіді:
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/uk/group-by-functions.html#function_group-concat
З вищенаведеного посилання GROUP_CONCAT
: Ця функція повертає рядковий результат із об'єднаними значеннями не-NULL з групи. Він повертає NULL, якщо немає значення NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Детальніше тут .
З вищенаведеного посилання GROUP_CONCAT
: Ця функція повертає рядковий результат із об'єднаними значеннями не-NULL з групи. Він повертає NULL, якщо немає значення NULL.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - У MySQL ви можете отримати об'єднані значення комбінацій виразів. Для усунення повторюваних значень використовуйте пункт DISTINCT . Для сортування значень у результаті використовуйте пункт ORDER BY. Щоб сортувати у зворотному порядку , додайте ключове слово DESC (у зменшенні) до назви стовпця, за яким Ви сортуєте, у пункті ЗАМОВИТИ ЗА. За замовчуванням - порядку зростання; це може бути визначено явно за допомогою ключового слова ASC. Типовим роздільником між значеннями в групі є кома (“,”). Щоб чітко вказати роздільник, використовуйте SEPARATOR з наступним буквеним значенням рядка, яке слід вставити між значеннями групи. Щоб повністю усунути роздільник, вкажіть SEPARATOR '' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
АБО
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Результат обрізається до максимальної довжини, яка задається системною змінною group_concat_max_len, яка має значення за замовчуванням 1024 символи, тому спочатку робимо:
SET group_concat_max_len=100000000;
а потім, наприклад:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
конфігурації? Поточне з'єднання / сеанс, чи це вплине на інших клієнтів?
Чудові відповіді. У мене також була проблема з NULLS і мені вдалося її вирішити, включивши COALESCE всередину GROUP_CONCAT. Приклад наступний:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Сподіваюся, це допоможе комусь іншому