SQL TOP, LIMIT, FETCH FIRST or ROWNUM Clause
🔹 چرا نیاز داریم؟
گاهی فقط میخواهیم چند ردیف اول از نتایج را ببینیم (مثلاً ۱۰ مشتری برتر یا آخرین سفارشها).
در SQL، این کار بسته به نوع پایگاه داده (DBMS) متفاوت انجام میشود.
🔹 1️⃣ SQL Server → TOP
🔹 فقط 5 ردیف اول برمیگرداند.
با شرط:
🔹 2️⃣ MySQL و PostgreSQL → LIMIT
🔹 5 ردیف اول برمیگرداند.
با offset (پرش از رکوردهای اول):
🔹 از ردیف 11 شروع کرده و 5 ردیف برمیگرداند.
🔹 3️⃣ Oracle → ROWNUM
🔹 فقط 5 ردیف اول را نمایش میدهد.
در Oracle جدیدتر (۱۲c به بعد):
🔹 4️⃣ استاندارد SQL → FETCH FIRST
🔹 در DBMSهایی مثل DB2, Oracle 12c+, PostgreSQL پشتیبانی میشود.
🔹 مقایسه سریع (Cheat Sheet)
DBMS | دستور | مثال |
---|---|---|
SQL Server | TOP (n) | SELECT TOP 5 * FROM T; |
MySQL | LIMIT n | SELECT * FROM T LIMIT 5; |
PostgreSQL | LIMIT n OFFSET m | SELECT * FROM T LIMIT 5; |
Oracle قدیمی | ROWNUM | WHERE ROWNUM <= 5 |
Oracle 12c+ | FETCH FIRST n ROWS ONLY | SELECT * FETCH FIRST 5 ROWS ONLY; |
استاندارد SQL | FETCH FIRST n ROWS ONLY | همان بالا |
🔹 مثال کاربردی: 3 مشتری با بالاترین سفارش
(SQL Server مثال)
(MySQL مثال)