Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या मैं कई MySQL पंक्तियों को एक फ़ील्ड में जोड़ सकता हूँ?

आप 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);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टाइमस्टैम्प () उदाहरण – MySQL

  2. चुनें COUNT () बनाम mysql_num_rows ();

  3. संदर्भ:MySQL एक्सटेंशन का उपयोग करके एक आदर्श कोड नमूना क्या है?

  4. XAMPP इंस्टालेशन में MySQL InnoDB स्टोरेज इंजन सपोर्ट सक्षम करें

  5. MySQL में एक ही टेबल में कैसे डालें?