P粉3669463802023-08-23 12:03:30
如果你的MySQL版本(4.1)支持,可以看看GROUP_CONCAT
。更多詳細資訊請參考文件。
查詢語句如下:
SELECT GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies WHERE person_id = 5 GROUP BY 'all';
P粉0020233262023-08-23 10:26:52
您可以使用GROUP_CONCAT
函數:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
正如Ludwig在他的評論中所述,您可以添加DISTINCT
運算子以避免重複:
SELECT person_id, GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
如Jan在他們的評論中所述,您也可以在合併之前對值進行排序,使用ORDER BY
:
SELECT person_id, GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
正如Dag在他的評論中所述,結果有一個1024位元組的限制。為了解決這個問題,在您的查詢之前執行以下查詢:
SET group_concat_max_len = 2048;
當然,您可以根據需要更改2048
的值。計算並指派值的方法如下:
SET group_concat_max_len = CAST( (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ') FROM peoples_hobbies GROUP BY person_id) AS UNSIGNED);