P粉5205457532023-08-29 09:04:00
看看 GROUP_CONCAT
如果您的 MySQL 版本 (4.1) 支援它。有關更多信息,請參閱文檔詳細資訊。
它看起來像:
SELECT GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies WHERE person_id = 5 GROUP BY 'all';
P粉0418569552023-08-29 00:29:10
您可以使用GROUP_CONCAT< /代码>
:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
正如路德維希在他的評論中所述, a> 您可以新增 DISTINCT
運算子以避免重複:
SELECT person_id, GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
如 Jan 在他們的評論中所述, a> 您也可以在使用 ORDER BY
內爆之前對值進行排序:
SELECT person_id, GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
正如達格在他的評論中所述, 結果有 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);