تتحكم عبارة LIMIT في عدد الصفوف المُعادة في نتائج الاستعلام.
صياغة أساسية
اختيار الصفوف الأولى:
LIMIT mيعيد أول m صفوف من النتيجة، أو كل السجلات إذا كان عددها أقل من m.
صياغة TOP البديلة (متوافقة مع MS SQL Server):
-- SELECT TOP number|percent column_name(s) FROM table_name
SELECT TOP 10 * FROM numbers(100);
SELECT TOP 0.1 * FROM numbers(100);وهذا يعادل LIMIT m، ويمكن استخدامه للتوافق مع استعلامات Microsoft SQL Server.
الاختيار مع الإزاحة:
LIMIT m OFFSET n
-- or equivalently:
LIMIT n, mيتجاوز أول n من الصفوف، ثم يعيد الصفوف m التالية.
في كلتا الصيغتين، يجب أن يكون n و m عددين صحيحين غير سالبين.
الحدود السالبة
حدِّد الصفوف من نهاية مجموعة النتائج باستخدام قيم سالبة:
| الصيغة | النتيجة |
|---|---|
LIMIT -m |
آخر m صفوف |
LIMIT -m OFFSET -n |
آخر m صفوف بعد تخطي آخر n صفوف |
LIMIT m OFFSET -n |
أول m صفوف بعد تخطي آخر n صفوف |
LIMIT -m OFFSET n |
آخر m صفوف بعد تخطي أول n صفوف |
صيغة LIMIT -n, -m مكافئة لـ LIMIT -m OFFSET -n.
حدود LIMIT الكسرية
استخدم قيمًا عشرية بين 0 و1 لتحديد نسبة مئوية من الصفوف:
| الصياغة | النتيجة |
|---|---|
LIMIT 0.1 |
أول 10% من الصفوف |
LIMIT 1 OFFSET 0.5 |
الصف الوسيط |
LIMIT 0.25 OFFSET 0.5 |
الربيع الثالث (25% من الصفوف بعد تجاوز أول 50%) |
الجمع بين أنواع LIMIT
يمكنك الجمع بين الأعداد الصحيحة العادية والإزاحات الكسرية أو السالبة:
LIMIT 10 OFFSET 0.5 -- 10 rows starting from the halfway point
LIMIT 10 OFFSET -20 -- 10 rows after skipping the last 20LIMIT … WITH TIES
يضمّ المعدِّل WITH TIES صفوفًا إضافية تحمل قيم ORDER BY نفسها التي يحملها الصف الأخير ضمن الحد.
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘عند استخدام WITH TIES، تُدرَج جميع الصفوف التي تطابق القيمة الأخيرة:
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5 WITH TIES┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘يُدرج الصف 6 لأنه يحمل القيمة نفسها (2) التي في الصف 5.
وينطبق الأمر نفسه عند تحديد الإزاحة باستخدام الكلمة المفتاحية OFFSET:
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 3 OFFSET 2 WITH TIES┌─n─┐
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘يؤدي عادةً تخطي أول صفّين وأخذ 3 إلى إرجاع 1, 1, 2، لكن أُدرِجت القيمة 2 الثانية أيضًا لأنها مساوية للصف الأخير.
يعمل WITH TIES أيضًا مع القيم السالبة في LIMIT وOFFSET. ويضمّ صفوفًا إضافية تحمل قيم ORDER BY نفسها التي يحملها أول صف محدد:
SELECT number % 3 AS n FROM numbers(15)
ORDER BY n LIMIT -4 OFFSET -3 WITH TIES┌─n─┐
│ 1 │
│ 1 │
│ 1 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘من دون WITH TIES، ستكون النتيجة 1, 1, 2, 2. وعند استخدام WITH TIES، تُدرَج ثلاثة صفوف إضافية بالقيمة 1 لأنها تتساوى مع أول صف مُحدَّد.
يمكن دمج هذا المُعدِّل مع المُعدِّل ORDER BY ... WITH FILL.
اعتبارات
نتائج غير حتمية: من دون عبارة ORDER BY، قد تكون الصفوف المُعادة عشوائية وقد تختلف من تنفيذ استعلام إلى آخر.
حدّ على مستوى الخادم: يمكن أيضًا أن يتأثر عدد الصفوف المُعادة بإعداد limit.
انظر أيضًا
- LIMIT BY — يحدّ عدد الصفوف لكل مجموعة من القيم، وهو مفيد للحصول على أعلى N من النتائج ضمن كل فئة.