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

न्यूनतम दूरी और समूह द्वारा

यहां आधिकारिक MySQL प्रलेखन में एक उत्कृष्ट लेख है:

उद्धरण:

एक निश्चित कॉलम के समूह-वार अधिकतम को धारण करने वाली पंक्तियाँ

कार्य:प्रत्येक लेख के लिए, सबसे महंगी कीमत वाले डीलर या डीलर खोजें।

इस समस्या को इस तरह की सबक्वेरी से हल किया जा सकता है:

SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article);

पिछला उदाहरण एक सहसंबद्ध उपश्रेणी का उपयोग करता है, जो अक्षम हो सकती है (खंड 13.2.10.7, "सहसंबद्ध उपश्रेणी" देखें)। समस्या को हल करने की अन्य संभावनाएं FROM क्लॉज या LEFT JOIN में एक असंबद्ध सबक्वेरी का उपयोग करना है।

असंबद्ध सबक्वेरी:

SELECT s1.article, dealer, s1.price
FROM shop s1
JOIN (
  SELECT article, MAX(price) AS price
  FROM shop
  GROUP BY article) AS s2
  ON s1.article = s2.article AND s1.price = s2.price;

बाएं शामिल हों:

SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price < s2.price
WHERE s2.article IS NULL;

LEFT JOIN इस आधार पर काम करता है कि जब s1.price अपने अधिकतम मूल्य पर होता है, तो कोई s2.price अधिक मूल्य के साथ नहीं होता है और s2 पंक्तियों का मान NULL होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORDER BY के बाद GROUP BY

  2. ट्रिगर में उपयोग करने के लिए वर्तमान अद्यतन कॉलम नाम प्राप्त करें

  3. शॉर्टहैंड पीडीओ क्वेरी

  4. डेटाबेस स्कीमा की कल्पना करने के लिए अच्छा उपकरण?

  5. MySQL में टेबल कॉपी कैसे करें