If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
तो अभी तक हम table से सभी records लेकर आ रहे थे , क्या हो अगर हमें कुछ records चाहिए हो ? या फिर किसी particular index से किसी particular index तक records चहिये हों ?
Well , उसके लिए MySQL ने हमें LIMIT
और OFFSTET
का concept दिया है , जिसकी हम से हम need के according records get कर सकते हैं।
generally limit का syntax कुछ इस तरह से होता है।
SELECT select_list FROM table_name LIMIT [OFFSET] , no_of_records;
Offset : Offset का है , कितने records skip करने हैं।
no_of_records : वो number जितने आपको records fetch करने हैं।
अगर आप offset pass नहीं करते हैं तो By default Offset 0 रहता है , मतलब एक भी record skip नहीं होगा , इसलिए नीचे दी गयी queries same हैं।
LIMIT 0,10;
or
LIMIT 10;
Example के लिए मेरे users table में 6 records हैं , उनमे से अगर मुझे सिर्फ 3 records चाहिए तो query कुछ इस तरह से होगी।
SELECT id,name FROM users LIMIT 3;
Output
+----+-------------+ | id | name | +----+-------------+ | 1 | Tom | | 2 | Tom Holland | | 3 | Tommy | +----+-------------+
अब अगर आपको किसी particular index से records चाहिए तो OFFSET
का use कर सकते हैं।
SELECT id,name FROM users LIMIT 3 OFFSET 3;
+----+--------------+ | id | name | +----+--------------+ | 4 | john Doe | | 5 | Peter Quill | | 6 | Peter Parker | +----+--------------+
अब कुछ real time use cases देख लेते हैं जहाँ पर LIMIT का use किया जाता है।
records से highest या second highest salary या marks निकलना बहुत common चीज़ है , इसे आप कुछ इस तरह से कर सकते हैं। इसके लिए LIMIT
के साथ ORDER BY
का use किया जाता है।
SELECT id,name,salary FROM users ORDER BY salary DESC LIMIT 1,1;
सबसे पहले salary को descending order में रखा , फिर 1 record जो कि highest salary वाला है उसे skip कर दिया जिससे हमें second highest salary वाला record मिल जायगा।
इसी तरह से second lowest record के लिए
SELECT id,name,salary FROM users ORDER BY salary ASC LIMIT 1,1;
बैसे किसी भी nth
number के record को search करने के लिए नीचे दी गयी query syntax को follow कर सकते हैं -
SELECT column(s)
FROM table_name
ORDER BY coloumn [ASC|DESC]
LIMIT n-1, 1;
अगर आपको lowest चाहिए तो ASC
use करें और highest के लिए DESC
, n वो number है जिस number का आपको record search करना है।
आपने हमारी website पर ही Blogs listing में pagination देखा होगा , जिसमे किसी particular page के ही records आते हैं , उसमे भी इसी तरह से records को fetch किया गया है ।
Suppose कीजिये आप हर बार 10
records show कराना चाहते हैं मतलब limit 10 है , तो सबसे पहले 1st
page के record के लिए कोई record skip होगा नहीं तो उसके लिए query कुछ इस तरह से होगी।
SELECT column(s) FROM table LIMIT 0,10;
और 2nd
page के लिए आपको पहले 10 records को skip करना रहेगा तो उसके लिए query कुछ इस तरह से रहेगी।
SELECT column(s) FROM table LIMIT 10,10;
इसी तरह से आपकी skip number page के according बढ़ता जाता है , हालाँकि same चीज़ को OFFSET
का use करके भी कर सकते हैं।