2012-01-26 2 views
1

Можно ли выбрать конкатенацию всех результатов, возвращаемых подзапросом?Массивы MySQL: Это можно сделать?

Так что если подзапрос возвращает более одной строки, я могу как-то получить все результаты, содержащиеся в одной строке?

ответ

2

Сортировка оф. Вы можете получить конкатенированный результат всех строк, которые были сгруппированы вместе, используя GROUP_CONCAT. Вы можете использовать это, чтобы использовать GROUP BY в столбце, который, как вы знаете, правильно сгруппировал результирующий набор, а затем с помощью функции, чтобы вернуть удержанные группы. На странице руководства следует привести несколько примеров.

+0

Это замечательно! Я могу просто «GROUP BY 1» получить все результаты, сгруппированные в одну строку. Благодаря! –

+0

Обратите внимание, что * Результат усечен до ... 'group_concat_max_len' ..., который имеет значение по умолчанию 1024. * Это тривиально для увеличения, как для всей системы, так и для каждого сеанса с помощью *' SET SESSION group_concat_max_len = val; '* –

1

Некоторые клиенты MySQL, такие как инструмент командной строки MySQL, могут экспортировать результирующий набор в различных форматах, таких как XML.

Если вы используете язык программирования, который реализует протокол клиента/сервера MySQL через некоторый тип API, похоже, что создание массива будет тривиальным в коде. PHP API MySQL возвращает результаты в массив.

Если вы говорите о группировании нескольких строк в результирующем наборе в одну строку, посмотрите на GROUP_CONCAT.

+0

** 1. ** Нет, не используя командную строку здесь, просто ежедневное программирование. ** 2. ** Да, определенно тривиально, но многие вещи, которые вы можете сделать на языке программирования, можно перенести в исходный оператор SQL, что может улучшить эффективность в некоторые моменты времени, а также сократить и упростить код в другое время. ** 3. ** Определенно, что мне нужно, хотя ваш ответ был 36 минут спустя. +1 в любом случае. –

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