2012-04-12 15 views
90

नीचे क्वेरी में:MySQL में OFFSET के साथ LIMIT का उपयोग करते समय कौन सी पंक्तियां वापस आती हैं?

SELECT column 
FROM table 
LIMIT 18 OFFSET 8 

कितने परिणाम हम और आउटपुट के रूप में मिल जाएगा, जहां से जहां के लिए?

+24

ऐसा लगता है कि आप केवल एक इस बारे में उलझन में नहीं रहे हैं :) –

+0

आदेश की सीमा पहले, तो OFFSET की जरूरत है। यदि नहीं, तो यह एक त्रुटि फेंक देगा। – Mouser

उत्तर

129

यह रिकॉर्ड # 9 से शुरू होने वाले 18 परिणाम और रिकॉर्ड # 26 पर समाप्त होगा।

offset से क्वेरी को पढ़कर प्रारंभ करें। सबसे पहले आप 8 से ऑफसेट करते हैं, जिसका अर्थ है कि आप क्वेरी के पहले 8 परिणामों को छोड़ देते हैं। फिर आप 18 तक सीमित हैं जिसका मतलब है कि आप रिकॉर्ड 9, 10, 11, 12, 13, 14, 15, 16 .... 24, 25, 26 जो कुल 18 रिकॉर्ड हैं।

this बाहर की जाँच करें।

और official documentation भी।

+0

आप सही हैं, क्या कोई अंतर बी/डब्ल्यू सीमा 8,18 है और सीमा 18 ऑफसेट 8 –

+17

नहीं है, यह वही है। 'LIMIT 8, 18' सिर्फ एक शॉर्टकट है :) –

2

आपको 26 को column मूल्य 9 से उत्पादन मिल जाएगा के रूप में आप OFFSET के रूप में 8

11

सीमा खंड एक एसक्यूएल बयान में लौट आए परिणामों की संख्या सीमित करने के लिए प्रयोग किया जाता है का उल्लेख किया है।

SELECT column 
FROM table 
LIMIT 10 

यह Microsoft SQL सर्वर पर टॉप खंड के समान है: तो अगर आप एक मेज में 1000 पंक्तियाँ है, लेकिन केवल पहले 10 वापस जाने के लिए चाहते हैं, आप कुछ इस तरह करना होगा। हालांकि LIMIT क्लॉज हमेशा MySQL, और PostgreSQL पर क्वेरी के अंत में जाता है।

अब मान लें कि आप परिणाम 11-20 दिखाना चाहते हैं। साथ कीवर्ड OFFSET अपने बस के रूप में आसान है, निम्न क्वेरी करना होगा:

SELECT column FROM table 
LIMIT 10 
OFFSET 10 
6

OFFSET कुछ भी नहीं है, लेकिन यह सिर्फ ऐसे कीवर्ड और तालिका में कर्सर शुरू करने से संकेत मिलता है।

SELECT column FROM table LIMIT 18 OFFSET 8 //start on record 9 (OFFSET 8) with record 18 

आप एक ही परिणाम प्रपत्र प्राप्त

SELECT column FROM table LIMIT 8,18 
+0

अच्छा स्पष्टीकरण! धन्यवाद –

संबंधित मुद्दे