2009-11-18 4 views
4

У меня есть хранимая процедура, которая вернет список идентификаторов. Я хочу вернуть этот список в виде строки, разделенной запятой, т. Е. «1,2,3,4,5».Mysql как сгладить результирующий набор

Я знаю, что могу сделать это с помощью курсора, но есть ли более простой способ превратить набор результатов в сплющенную строку?

ответ

12

MySQL имеет group_concat() aggregate function:

SELECT group_concat(some_column) FROM mytable; 

Вернется все some_column значения из таблицы соединены запятыми.

Предостережение: Остерегайтесь того, что результат ограничен системной переменной group_concat_max_len, которая по умолчанию составляет всего 1024 байта! Для того, чтобы избежать попадания этой стены, вы должны выполнить это перед выполнением запроса:

SET SESSION group_concat_max_len = 65536; 

или больше, в зависимости от того, сколько результатов вы ожидаете. Но это значение не может быть больше max_allowed_packet

-2

Вы должны действительно форматировать внешний код.

Смежные вопросы