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

एक तालिका से केवल एक पंक्ति में अनेक पंक्तियाँ जोड़ें

मैं अन्य उत्तरों से सहमत हूं, कि GROUP_CONCAT अल्पविराम से अलग किए गए मानों को विभाजित करने के लिए PHP के साथ शायद सबसे अच्छा तरीका है, हालांकि अगर किसी अन्य कारण से आपको शुद्ध एसक्यूएल के माध्यम से सुझाए गए आउटपुट की आवश्यकता है तो मैं निम्नलिखित में से एक का सुझाव दूंगा।

1. सेल्फ जॉइन

SELECT  t1.Name, 
        MIN(t1.Subject) AS Sub1,
        MIN(t2.Subject) AS Sub2,
        MIN(t3.Subject) AS Sub3,
        MIN(t4.Subject) AS Sub4
FROM    Students t1
        LEFT JOIN Students T2 
            ON t1.Name = t2.Name 
            AND t2.Subject > t1.Subject
        LEFT JOIN Students T3 
            ON t2.Name = t3.Name 
            AND t3.Subject > t2.Subject
        LEFT JOIN Students T4 
            ON t3.Name = t4.Name 
            AND t4.Subject > t3.Subject
GROUP BY t1.Name;

2. एकत्रित करने के लिए ROW_NUMBER प्रकार फ़ंक्शन का उपयोग करना

SELECT   Name,
         MAX(IF(RowNum = 1,Subject, NULL)) AS Sub1,
         MAX(IF(RowNum = 2,Subject, NULL)) AS Sub2,
         MAX(IF(RowNum = 3,Subject, NULL)) AS Sub3,
         MAX(IF(RowNum = 4,Subject, NULL)) AS Sub4
FROM     (    SELECT   Name,
                       Subject,
                       @r:= IF(@Name = Name, @r + 1, 1) AS RowNum,
                       @Name:= Name AS Name2
              FROM    Students,
                      (SELECT @Name:='') n,
                      (SELECT @r:= 0) r
              ORDER BY Name, Sno
          ) t
GROUP BY Name


  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. SQLSTATE [HY093]:अमान्य पैरामीटर संख्या:बाध्य चर की संख्या लाइन 102 पर टोकन की संख्या से मेल नहीं खाती

  3. MySQL बनाम SQL सर्वर एक्सप्रेस

  4. एकाधिक मानों के लिए अलग-अलग पंक्तियों की संख्या गिनें

  5. Laravel प्रवासन तालिका पहले से मौजूद है, लेकिन मैं नया जोड़ना चाहता हूं पुराने नहीं