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

mysql अल्पविराम से अलग आईडी के साथ दो तालिका में शामिल हों

आप FIND_IN_SET() use का उपयोग कर सकते हैं और GROUP_CONCAT() इस पर,

SELECT  b.Group_ID, GROUP_CONCAT(a.name) name
FROM    Table2 b
        INNER JOIN Table1 a
            ON FIND_IN_SET(a.ID, b.Group_ID) > 0
GROUP   BY b.Group_ID

आउटपुट

╔══════════╦═════════════════╗
║ GROUP_ID ║      NAME       ║
╠══════════╬═════════════════╣
║ 1        ║ Person1         ║
║ 2,3      ║ Person2,Person3 ║
╚══════════╩═════════════════╝

एक विचार के रूप में, यह क्वेरी अपेक्षित रूप से कुशलता से प्रदर्शन नहीं कर सकती है। कृपया अल्पविराम से अलग किए गए मानों को न सहेज कर अपनी तालिका को ठीक से सामान्य करें।

अपडेट करें

GROUP_ID काफी भ्रमित करने वाला है। क्या यह PersonIDList नहीं है ? वैसे भी, यहाँ मेरा सुझाया गया स्कीमा डिज़ाइन है:

व्यक्ति तालिका

  • व्यक्ति आईडी (पीके)
  • व्यक्ति का नाम
  • अन्य कॉलम..

ग्रुप टेबल

  • ग्रुपआईडी (पीके)
  • समूह का नाम
  • अन्य कॉलम..

PERSON_GROUP तालिका

  • PersonID (FK) (उसी समय PK कॉलम GroupID के साथ)
  • ग्रुपआईडी (एफके)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डुप्लिकेट प्रविष्टियों के लिए त्रुटि को कैसे संभालें?

  2. एकाधिक MySQL तालिकाओं में PHP के माध्यम से बड़ी CSV फ़ाइल आयात करने की समय-कुशल विधि की आवश्यकता है

  3. मैसकल 1 रैंडम रो

  4. utf8_bin बनाम utf_unicode_ci

  5. SQL कथन में सभी मापदंडों का उपयोग नहीं किया गया था (पायथन, MySQL)