आप GROUP_CONCATका उपयोग कर सकते हैं कोड>
:
SELECT person_id,
GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
जैसा कि लुडविग ने अपने में कहा है टिप्पणी,
आप DISTINCT
जोड़ सकते हैं डुप्लिकेट से बचने के लिए ऑपरेटर:
SELECT person_id,
GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
जैसा कि जनवरी ने उनके में कहा है टिप्पणी,
आप 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);