Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

LIMIT

تتحكم عبارة 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 20

LIMIT … 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 من النتائج ضمن كل فئة.
Navigation