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

MySQL - नियंत्रित करें कि कौन सी पंक्ति समूह द्वारा लौटाई जाती है

इसे समूह-वार अधिकतम कॉलम का चयन करना कहा जाता है। यहां mysql के लिए कई अलग-अलग तरीके दिए गए हैं।

यहां बताया गया है कि मैं इसे कैसे करूंगा:

SELECT *
FROM (SELECT id, max(version_id) as version_id FROM table GROUP BY id) t1
INNER JOIN table t2 on t2.id=t1.id and t1.version_id=t2.version_id

यह अपेक्षाकृत कुशल होगा, हालांकि MySQL सबक्वायरी के लिए स्मृति में एक अस्थायी तालिका तैयार करेगा। मुझे लगता है कि इस तालिका के लिए आपके पास पहले से ही एक अनुक्रमणिका (id, version_id) है।

SQL में यह कमी है कि आपको इस प्रकार की समस्या के लिए कमोबेश एक सबक्वेरी का उपयोग करना पड़ता है ( सेमी-जॉइन एक और उदाहरण हैं)।

सबक्वायरीज़ को MySQL में अच्छी तरह से ऑप्टिमाइज़ नहीं किया गया है, लेकिन असंबद्ध सबक्वेरीज़ इतनी खराब नहीं हैं जब तक कि वे इतनी बड़ी न हों कि वे मेमोरी के बजाय डिस्क पर लिखी जाएँगी। यह देखते हुए कि इस क्वेरी में केवल दो ints हैं सबक्वेरी ऐसा होने से बहुत पहले लाखों पंक्तियाँ हो सकती हैं लेकिन आपकी पहली क्वेरी में चुनिंदा * सबक्वेरी इस समस्या से बहुत जल्द पीड़ित हो सकती है।



  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. वर्चुअलमिन:पासवर्ड बदलने के बाद आपके पास इस MySQL डेटाबेस तक पहुंच नहीं है

  3. SQL जॉइन का परिचय

  4. MySQL में अंतिम अद्यतन पंक्ति की आईडी कैसे प्राप्त करें?

  5. DB से कनेक्ट किए बिना mysql_real_escape_string का विकल्प