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

रूपांतरण में शामिल होने के लिए ग्रुप बाय के लिए सबक्वेरी द्वारा ऑर्डर करें

इसे निम्नलिखित के लिए सरल बनाया जा सकता है (ORDER BY सबक्वेरी में बेकार है):

SELECT * 
FROM table
GROUP BY title

आपको क्यों लगता है कि आपको JOIN की आवश्यकता है? ? (ठीक है, इसे टिप्पणियों द्वारा हल किया गया था)।

आपकी टिप्पणी के बाद कि आपको हर शीर्षक की आवश्यकता है, सबसे बड़ी टाइमस्टैम्प वाली पंक्ति, यह काम करेगी:

SELECT t.* 
FROM
    table AS t
  JOIN
    ( SELECT title
           , MAX(timestamp) AS maxts
      FROM table
      GROUP BY title
    ) AS grp
    ON grp.title = t.title
    AND grp.maxts = t.timestamp
ORDER BY t.timestamp DESC

रिकॉर्ड के लिए, आपकी मूल क्वेरी:

SELECT * 
FROM 
  ( SELECT * 
    FROM table 
    ORDER BY timestamp DESC 
  ) m
GROUP BY title

हो सकता है अपेक्षानुसार काम करें, लेकिन:केवल MySQL में जो आपको SELECT . में उपयोग करने की अनुमति देता है सूची फ़ील्ड जो GROUP BY . में नहीं हैं खंड (या उन पर निर्भर), बिना किसी समग्र कार्य के। तो, उपरोक्त क्वेरी अधिक या कम यादृच्छिक . लौटाएगी प्रत्येक शीर्षक के लिए पंक्ति। वास्तव में, यह एक शीर्षक के लिए मिलने वाली पहली पंक्ति लौटाएगा। इसलिए, सबसे पहले सबक्वेरी (जो timestamp DESC द्वारा ऑर्डर करता है) को चला रहा है ) सबसे बड़ी टाइमस्टैम्प वाली पहली पंक्ति खोजने में परिणाम देता है।

हालांकि, ऐसा केवल इसलिए होता है क्योंकि (कब, अगर) ऑप्टिमाइज़र यह नहीं समझता है कि सबक्वेरी बेकार है। आप पा सकते हैं कि आपकी मूल क्वेरी ठीक चलती है जब एक दिन आप MySQL संस्करण 7.5 में अपग्रेड करते हैं और आपकी क्वेरी पहले की तरह काम करना बंद कर देती है। (क्योंकि ऑप्टिमाइज़र अधिक चतुर हो गया है और उप-चयन के बिना आपकी क्वेरी को सरल में अनुवादित कर दिया है)।

आप अपनी क्वेरी को पूरी तरह से काम करना बंद करने और त्रुटि उत्पन्न करने के लिए भी पा सकते हैं यदि MySQL भविष्य में रिलीज में GROUP BY के लिए SQL मानकों के संदर्भ में निर्णय लेता है। प्रश्न।



  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. PHP से mySQL में संग्रहित प्रक्रियाओं को कैसे सम्मिलित/बनाना है?

  3. MySQL और SQL सर्वर के बीच अंतर

  4. InnoDB के साथ पूर्ण पाठ खोज

  5. संख्या मानों के लिए सेल के डेटाटाइप को टेक्स्ट के रूप में स्पष्ट रूप से सेट करें