2009-07-19 11 views
6

में MAX और LIMIT का एक साथ उपयोग कैसे कर सकता हूं मेरे पास निम्न संरचना वाला एक तालिका है:मैं MySQL

आईडी | रंग

1 | लाल
2 | नीला
3 | पीला
8 | बैंगनी
10 | हरा



100 | पीला

मैं पहली 5 पंक्तियों के लिए MAX आईडी मान को पकड़ने में सक्षम होना चाहता हूं।

उदाहरण के लिए, मैं बहुत कुछ करना चाहते हैं: मैक्स का चयन करें (आईडी) टेबल सीमा 5

इस आशा मूल्य वापसी होगी 10

से लेकिन, MySQL 100 लौटने रहता है ... इसकी तरह MySQL को LIMIT क्लॉज भी नहीं दिखता है।

उत्तर

19

ऐसा लगता है कि आप शीर्ष 5 रिकॉर्ड (आईडी द्वारा आदेशित) चुनना चाहते हैं और फिर उस समूह का उच्चतम मूल्य प्राप्त करना चाहते हैं? यदि ऐसा है तो:

SELECT id FROM table LIMIT 4,1 

एक पंक्ति जाओ लेकिन 'आईडी द्वारा आदेश' को छोड़ 4 पहले .. जोड़ें अगर यह MyISAM तालिका है:

SELECT 
    MAX(ID) 
FROM 
    ( 
     SELECT ID 
     FROM YourTable 
     ORDER BY ID 
     LIMIT 5 
    ) as T1 
+1

आपको शायद "चयन *" की आवश्यकता नहीं है; केवल "आईडी का चयन करें" पर्याप्त होना चाहिए? (मुझे यकीन नहीं है कि यह करता है, लेकिन शायद आपको केवल उस फ़ील्ड को चुनने की आवश्यकता है जो आवश्यक स्मृति को कम कर सकती है - जो हमेशा अच्छी होती है) –

+0

पूरी तरह से काम करता है !! बहुत धन्यवाद। –

+0

हां, यह 'चयन आईडी' होना चाहिए – gahooa

1

उपयोग एक subselect:

SELECT MAX(id) FROM (SELECT id FROM table LIMIT 5); 

यह काफी वैध एसक्यूएल नहीं हो सकता है, लेकिन यह है कि आप एक सामान्य विचार देना चाहिए।

+4

मान्य एसक्यूएल नहीं है। आपको प्रत्येक व्युत्पन्न तालिका पर उपनाम की आवश्यकता है + आपके पास ऑर्डर-बाय होना चाहिए ताकि आपको "परिभाषित" परिणाम मिल सकें। – gahooa

9

वहाँ सबसिलेक्ट से यह करने के लिए बेहतर तरीका है।

+2

यह मेरे लिए काम करता है। मुझे लगता है कि यह जवाब कम हो गया है। –

+1

यह काम करता है यदि आप जानते हैं कि कितनी पंक्तियां हैं। यदि आप पंक्ति गणना से अधिक है, तो क्वेरी न्यूल लौटाती है। मुझे बैच उद्देश्यों के लिए इसकी आवश्यकता थी, लेकिन अधिकतम संस्करण मेरे मामले में अधिक उपयुक्त है। – talereader

0

आप निम्नलिखित संरचना के साथ एक मेज है, तो

ID | Color 

1 | red 
2 | blue 
3 | yellow 
8 | purple 
10| green 
. 
. 
. 
100|yellow 

पहले 5 (AUTO_INCREMENT?) के लिए मानों मैक्स आईडी मूल्य 5. Btw है, पहले 6 मूल्यों के लिए मैक्स ID मान 6 और 100 सभी मूल्यों के लिए। सबसे अच्छा संबंध है।