SQL Select Top Clause क्या है?
SQL Select Top Clause का उपयोग SQL query के result में से limited number of rows दिखाने के लिए किया जाता है। जब किसी table में बहुत ज्यादा records होते हैं और हमें सिर्फ कुछ records ही देखने होते हैं, तब इस type की clause बहुत काम आती है।
आसान शब्दों में:
यह clause database से कहती है:
“मुझे पूरी table नहीं चाहिए, सिर्फ इतनी rows ही दिखाओ”
Select Top = result में सिर्फ उतनी ही rows दिखाओ जितनी चाहिए.
यह clause आमतौर पर इन situations में इस्तेमाल होती है:
- Latest records देखने के लिए
- Top students या top products निकालने के लिए
- Large table से sample data देखने के लिए
- Pagination बनाने के लिए
Different Databases में अलग Syntax क्यों होता है
SQL का concept standard है, लेकिन अलग–अलग databases ने limited rows दिखाने के लिए अपना–अपना syntax बनाया है। यानी काम सबका same है, फर्क सिर्फ लिखने के तरीके में है।
Concept सभी databases में same है.
Syntax database के अनुसार बदलता है.
| Database | Syntax Keyword |
|---|---|
| SQL Server / MS Access | TOP |
| MySQL / PostgreSQL / SQLite | LIMIT |
| Oracle 12c+ | FETCH FIRST |
| Oracle पुराने version | ROWNUM |
अब हम हर syntax को example + explanation + result के साथ समझेंगे।
Example Table
हम पूरे chapter में इसी students table को मानकर चलेंगे:
| id | name | age | city |
|---|---|---|---|
| 1 | Rahul | 21 | Delhi |
| 2 | Aman | 23 | Jaipur |
| 3 | Neha | 22 | Mumbai |
| 4 | Rohit | 20 | Delhi |
| 5 | Pooja | 24 | Pune |
SQL TOP (SQL Server, MS Access)
TOP Basic Syntax
SELECT TOP number column_names
FROM table_name;
Example 1: TOP Basic Use (Top 3 records)
SELECT TOP 3 *
FROM students;
इस query का काम:
studentstable से data लेना- सिर्फ पहली 3 rows दिखाना
Result में क्या आएगा:
- Rahul
- Aman
- Neha
यह query तब उपयोगी होती है जब:
- आपको जल्दी से table का overview चाहिए
- Sample data देखना हो
Example 2: TOP with ORDER BY
SELECT TOP 2 *
FROM students
ORDER BY age DESC;
इस query का काम:
- पहले students को age के हिसाब से descending order में arrange करना
- फिर सबसे ऊपर के 2 records दिखाना
Result में क्या आएगा:
- Pooja (age 24)
- Aman (age 23)
यह query उपयोग होती है:
- Top age वाले students निकालने के लिए
- Highest value वाले records देखने के लिए
SQL LIMIT (MySQL, PostgreSQL, SQLite)
LIMIT Basic Syntax
SELECT column_names
FROM table_name
LIMIT number;
Example 3: LIMIT Basic Use
SELECT *
FROM students
LIMIT 3;
इस query का काम:
studentstable से सिर्फ 3 rows return करना
Result:
- Rahul
- Aman
- Neha
यह syntax MySQL में सबसे ज्यादा use होती है।
Example 4: LIMIT with ORDER BY
SELECT *
FROM students
ORDER BY age DESC
LIMIT 2;
इस query का काम:
- Age के हिसाब से students को sort करना
- फिर top 2 records दिखाना
Result:
- Pooja
- Aman
यह query real life में use होती है:
- Top scorers
- Most expensive products
- Latest records
Example 5: LIMIT with OFFSET
SELECT *
FROM students
LIMIT 2 OFFSET 2;
इस query का मतलब:
- पहले 2 records skip करो
- उसके बाद अगले 2 records दिखाओ
Result:
- Neha
- Rohit
यह query mainly use होती है:
- Pagination बनाने में
- Page 2, Page 3 जैसे result दिखाने में
SQL FETCH FIRST (Oracle 12c+, DB2)
FETCH FIRST Syntax
SELECT column_names
FROM table_name
FETCH FIRST number ROWS ONLY;
Example 6: FETCH FIRST Basic Use
SELECT *
FROM students
FETCH FIRST 3 ROWS ONLY;
इस query का काम:
- Table से सिर्फ पहली 3 rows दिखाना
Result:
- Rahul
- Aman
- Neha
यह LIMIT जैसा ही काम करता है, बस syntax अलग है।
Example 7: FETCH FIRST with ORDER BY
SELECT *
FROM students
ORDER BY age DESC
FETCH FIRST 2 ROWS ONLY;
इस query का काम:
- Age descending order में arrange करना
- फिर top 2 records दिखाना
Result:
- Pooja
- Aman
SQL ROWNUM (Oracle Old Versions)
Oracle के पुराने versions में LIMIT या FETCH नहीं होता, वहाँ ROWNUM का उपयोग किया जाता है।
ROWNUM Syntax
SELECT column_names
FROM table_name
WHERE ROWNUM <= number;
Example 8: ROWNUM Basic Use
SELECT *
FROM students
WHERE ROWNUM <= 3;
इस query का काम:
- Oracle को कहना कि सिर्फ पहली 3 rows ही दिखानी हैं
Result:
- Rahul
- Aman
- Neha
यह पुराने Oracle databases में LIMIT की तरह काम करता है।
Example 9: ROWNUM with ORDER BY (Important Concept)
SELECT *
FROM (
SELECT *
FROM students
ORDER BY age DESC
)
WHERE ROWNUM <= 2;
इस query का मतलब:
- पहले अंदर वाली query age के हिसाब से data sort करती है
- फिर बाहर वाली query top 2 rows निकालती है
Result:
- Pooja
- Aman
अगर subquery use नहीं की जाएगी तो गलत result आएगा।
TOP / LIMIT Without ORDER BY
ORDER BY के बिना LIMIT / TOP क्यों गलत हो सकता है?
अगर ORDER BY use नहीं किया गया, तो database any random order में rows return कर सकता है।
SELECT *
FROM students
LIMIT 3;
इस query में database किसी भी order में rows दिखा सकता है।
इसलिए best practice यह है:
- हमेशा LIMIT / TOP को ORDER BY के साथ use करें
Common Beginner Mistakes
- Database के हिसाब से गलत syntax use करना
- ORDER BY skip कर देना
- ROWNUM को direct ORDER BY के साथ लिखना
- ORDER BY के बिना TOP या LIMIT use करना
Incorrect example:
SELECT *
FROM students
WHERE ROWNUM <= 2
ORDER BY age DESC;
Correct example:
SELECT *
FROM (
SELECT *
FROM students
ORDER BY age DESC
)
WHERE ROWNUM <= 2;
Real Life Use Cases
- Latest 10 records दिखाना
- Top scoring students निकालना
- Pagination बनाना
- Large table से sample data देखना
Summary
- TOP, LIMIT, FETCH FIRST और ROWNUM का काम same है
- सभी limited rows दिखाने के लिए use होते हैं
- Syntax database के अनुसार बदलता है
- ORDER BY के साथ use करना सबसे सही तरीका है
- Pagination और top records के लिए बहुत जरूरी concept है
