Sie können GROUP_CONCAT
:
SELECT person_id,
GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
Wie Ludwig in beschrieben hat Kommentar,
Sie können den DISTINCT
hinzufügen Operator zur Vermeidung von Duplikaten:
SELECT person_id,
GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
Wie Jan in ihre Kommentar,
Sie können die Werte auch sortieren, bevor Sie sie mit ORDER BY
implodieren :
SELECT person_id,
GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
Wie Dag in sein Kommentar, Das Ergebnis ist auf 1024 Byte begrenzt. Um dies zu lösen, führen Sie diese Abfrage vor Ihrer Abfrage aus:
SET group_concat_max_len = 2048;
Natürlich können Sie 2048
ändern nach Ihren Bedürfnissen. Um den Wert zu berechnen und zuzuweisen:
SET group_concat_max_len = CAST(
(SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ')
FROM peoples_hobbies
GROUP BY person_id) AS UNSIGNED);