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

एक-से-अनेक SQL एकल पंक्ति में चयन करें

यह परिणाम प्राप्त करने का एक तरीका है।

यह दृष्टिकोण सहसंबद्ध उपश्रेणियों का उपयोग करता है। प्रत्येक सबक्वेरी एक ORDER BY . का उपयोग करती है तालिका 2 से संबंधित पंक्तियों को क्रमबद्ध करने के लिए खंड, और LIMIT . का उपयोग करता है पहली, दूसरी और तीसरी पंक्तियों को पुनः प्राप्त करने के लिए खंड।

SELECT a.PKID
     , a.DATA
     , (SELECT b1.U_DATA FROM table2 b1
         WHERE b1.PKID_FROM_TABLE_1 = a.PKID 
         ORDER BY b1.U_DATA LIMIT 0,1
       ) AS U_DATA1
     , (SELECT b2.U_DATA FROM table2 b2
         WHERE b2.PKID_FROM_TABLE_1 = a.PKID 
         ORDER BY b2.U_DATA LIMIT 1,1
       ) AS U_DATA2
     , (SELECT b3.U_DATA FROM table2 b3
         WHERE b3.PKID_FROM_TABLE_1 = a.PKID 
         ORDER BY b3.U_DATA LIMIT 2,1
       ) AS U_DATA3
  FROM table1 a
 ORDER BY a.PKID  

फ़ॉलोअप

@ gliese581g बताते हैं कि बाहरी क्वेरी द्वारा बड़ी संख्या में पंक्तियों के साथ इस दृष्टिकोण के साथ प्रदर्शन समस्याएं हो सकती हैं, क्योंकि चयन सूची में प्रत्येक सबक्वायरी बाहरी क्वेरी में लौटाई गई प्रत्येक पंक्ति के लिए निष्पादित हो जाती है।

यह बिना कहे चला जाना चाहिए कि यह दृष्टिकोण एक सूचकांक के लिए कहता है:

ON table2 (PKID_FROM_TABLE_1, U_DATA)

-या, कम से कम-

ON table2 (PKID_FROM_TABLE_1)

यह संभावना है कि बाद वाला सूचकांक पहले से मौजूद है, अगर कोई विदेशी कुंजी परिभाषित है। पूर्व इंडेक्स क्वेरी को पूरी तरह से इंडेक्स पेज ("इंडेक्स का उपयोग करना") से पूरी तरह से संतुष्ट होने की अनुमति देगा, बिना सॉर्ट ऑपरेशन ("फाइलों का उपयोग करना") की आवश्यकता के बिना।

@glies581g यह इंगित करने के लिए बिल्कुल सही है कि इस दृष्टिकोण का प्रदर्शन "बड़े" सेट पर समस्याग्रस्त हो सकता है।



  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 MONTH () प्राप्त करें?

  2. PHP HTML स्ट्रिंग को डेटाबेस में कैसे सेव करें

  3. MySQL पासवर्ड समस्याएँ (मैक ओएस एक्स लायन)

  4. डेटाबेस डिज़ाइन:समग्र कुंजी बनाम एक स्तंभ प्राथमिक कुंजी

  5. Oracle क्लाउड प्लेटफ़ॉर्म पर MySQL डेटाबेस सेवा के साथ Oracle JDeveloper का उपयोग करना, भाग 1