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

प्रति समूह प्रकार की क्वेरी में सबसे बड़ी n कैसे लिखें, लेकिन अतिरिक्त शर्तों के साथ?

इस पर कुछ ध्यान देने की आवश्यकता है कि शर्त को कहाँ रखा जाए (where या on ?) ताकि आप धोखे में न आएं :-) आपको t1 के लिए where की शर्त जोड़नी होगी खंड और t2 से on . के लिए खंड:

SELECT t1.type, t1.name, t1.value
FROM mytable t1
LEFT JOIN mytable t2 ON t1.type = t2.type AND t1.value > t2.value 
    AND t2.popularity > 3 /* here */
WHERE t2.value IS NULL 
    AND t1.popularity > 3 /* and here */

इसका परीक्षण नहीं किया है, लेकिन इसे काम करना चाहिए।

स्पष्टीकरण का प्रयास करें: वह स्थिति जिसमें क्लॉज प्रभावित करता है कि आप किन तत्वों को सबसे कम मूल्य वाले संभावित तत्व मानते हैं। जबकि on . में शर्त क्लॉज लिंकेज को प्रभावित करता है:आप इसकी तुलना किन अन्य तत्वों से करना चाहते हैं? यह उस समूह को परिभाषित करता है जिसके भीतर आप तुलना करते हैं। तकनीकी रूप से, इसका प्रभाव तब पड़ता है जब t2.* NULL होगा। अगर आपने t2.popularity पर where . को कंडीशन दी होती इसके बजाय, आपको उन समूहों के लिए कोई NULLs (अर्थात w/निम्नतम मान वाले तत्व नहीं मिलेंगे) प्राप्त नहीं होंगे, जहां निम्नतम तत्वों की लोकप्रियता कम है।




  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 में TOP का कोई विकल्प है?

  2. MySQL में प्रत्येक समूह के लिए रनिंग योग की गणना कैसे करें

  3. MATLAB और MySQL को JDBC ड्राइवर से जोड़ना

  4. होस्ट से एक डॉकटर कंटेनर में mysql से कनेक्ट करें

  5. कई से कई अंदर कई से कई टेबल