2011-03-26 2 views
12

Во-первых, вот запрос:есть предел длины к GROUP_CONCAT или другая причина, почему она не будет работать на текстовом поле

SELECT GROUP_CONCAT(title) title, GROUP_CONCAT(description) description, 
skill_id, count(*) 

FROM jobs j 
INNER JOIN job_feed_details d 
ON j.id = d.job_id 
JOIN jobs_skills js 
ON j.id = js.job_id 
    WHERE moderated = 1 
    group by skill_id 

Все работает, как ожидалось, за исключением поля описания возвращает только один результат, а конкатенации всех результатов. Я подозреваю, что это потому, что описание - это поле text, но я ничего не могу найти о том, почему конкатенация не будет работать с текстовым полем.

Кто-нибудь знает, почему это не сработает?

ответ

43

Длина результата group_concat ограничена (усечена) до значения системной переменной group_concat_max_len. Значение по умолчанию этой переменной 1024.

Если вы хотите изменить значение переменной синтаксис:

 
SET [GLOBAL | SESSION] group_concat_max_len = val; 

Больше информации Mysql 5 docs

+7

..limited байтами, а не символов. Поэтому, если вы используете текст в utf8, результат усекается после символа ~ 363 (см. [Is group_concat_max_len в байтах или символах?] (Http://ebergen.net/wordpress/2011/09/05/is-group_concat_max_len-in- байтов или-символов /)) –

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