U kunt GROUP_CONCAT
:
SELECT person_id,
GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
Zoals Ludwig zei in zijn commentaar,
je kunt de DISTINCT
. toevoegen operator om duplicaten te voorkomen:
SELECT person_id,
GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
Zoals Jan in hun commentaar,
je kunt de waarden ook sorteren voordat je ze implodeert met ORDER BY
:
SELECT person_id,
GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
Zoals Dag zei in zijn commentaar, er is een limiet van 1024 bytes op het resultaat. Om dit op te lossen, voert u deze zoekopdracht uit vóór uw zoekopdracht:
SET group_concat_max_len = 2048;
Natuurlijk kun je 2048
. wijzigen volgens uw behoeften. Om de waarde te berekenen en toe te wijzen:
SET group_concat_max_len = CAST(
(SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ')
FROM peoples_hobbies
GROUP BY person_id) AS UNSIGNED);