MAX()
. का उपयोग करने के मामले में GROUP BY
क्लॉज अनिवार्य रूप से क्वेरी इंजन को बताता है कि अधिकतम निर्धारित करने के लिए वस्तुओं को कैसे समूहित किया जाए। अपने पहले उदाहरण में आप केवल एक कॉलम का चयन कर रहे थे, इसलिए समूहीकरण की कोई आवश्यकता नहीं थी। लेकिन आपके दूसरे उदाहरण में आपके पास कई कॉलम थे। इसलिए आपको क्वेरी इंजन को यह बताना होगा कि अधिकतम खोजने के लिए किन लोगों की तुलना की जाएगी।
आपने इसे id
. द्वारा समूहबद्ध करने के लिए कहा था कॉलम। जिसका अर्थ है कि यह उन रिकॉर्ड्स की तुलना करने जा रहा है जिनके पास समान id
है और आपको प्रत्येक अद्वितीय id
. के लिए अधिकतम एक देता है . चूंकि हर रिकॉर्ड की एक अलग id
होती है , आपने अनिवार्य रूप से उस खंड के साथ कुछ नहीं किया।
इसने सभी रिकॉर्ड को एक id
. के साथ समूहीकृत किया का 1
(जो एक एकल रिकॉर्ड था), और अधिकतम id
. के साथ रिकॉर्ड लौटाया उस समूह से (जो वह रिकॉर्ड था)। इसने 2
. के लिए भी ऐसा ही किया , 3
, आदि.
यहां दिखाए गए तीन स्तंभों के मामले में, आपके रिकॉर्ड को समूहीकृत करने का एकमात्र स्थान test_id
होगा। कॉलम। कुछ इस तरह:
SELECT MAX(id), title, test_id
FROM images
WHERE image IS NOT null
GROUP BY test_id
यह उन्हें test_id
. द्वारा समूहीकृत करेगा , इसलिए परिणामों में रिकॉर्ड 6 शामिल होंगे (अधिकतम id
test_id
. के लिए 0), 4 (अधिकतम id
test_id
. के लिए 1), और 8 (अधिकतम id
test_id
. के लिए 2))। test_id
. में तीन अद्वितीय मानों के आधार पर रिकॉर्ड्स को उन तीन समूहों में विभाजित करके कॉलम, यह प्रभावी रूप से "अधिकतम" id
. ढूंढ सकता है प्रत्येक समूह के भीतर।