Can I concatenate multiple MySQL rows into one field?
Using
MySQL
, I can do something like:SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
and get:
shopping
fishing
coding
but instead I just want 1 row, 1 col:
shopping, fishing, coding
The reason is that I'm selecting multiple values from multiple tables, and after all the joins I've got a lot more rows than I'd like.
I've looked for a function on MySQL Doc and it doesn't look like the
CONCAT
or CONCAT_WS
functions accept result sets, so does anyone here know how to do this?Answer:
You can use GROUP_CONCAT.
As in:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies GROUP BY person_id
Death: As Dag stated in his comment, there is a 1024 byte limit on result. To solve this, run this query before your query:
SET group_concat_max_len = 2048
Of course, you can change
2048
according to your needs.http://stackoverflow.com/questions/276927/can-i-concatenate-multiple-mysql-rows-into-one-field
COMMENTS