LIMIT n BY expressions أول n صفوف لكل قيمة مميزة من expressions. ويمكن أن يحتوي المفتاح الخاص بـ LIMIT BY على أي عدد من expressions.
يدعم ClickHouse صيغ البنية التالية:
LIMIT [offset_value, ]n BY expressionsLIMIT n OFFSET offset_value BY expressions
LIMIT n BY expressions ويُرجع أول n صفوف لكل تركيبة مميزة من expressions. وإذا تم تحديد OFFSET، فعندئذٍ يتجاوز ClickHouse، لكل كتلة بيانات تنتمي إلى تركيبة مميزة من expressions، عدد offset_value من الصفوف من بداية الكتلة ويُرجع بحد أقصى n صفوف كنتيجة. وإذا كانت offset_value أكبر من عدد الصفوف في كتلة البيانات، فإن ClickHouse لا يُرجع أي صفوف من الكتلة.
لا يرتبط
LIMIT BY بـ LIMIT. ويمكن استخدامهما معًا في الاستعلام نفسه.LIMIT BY، ففعّل الإعداد enable_positional_arguments.
أمثلة
SELECT * FROM limit_by ORDER BY id, val LIMIT 2 OFFSET 1 BY id النتيجة نفسها.
يعطي الاستعلام التالي أعلى 5 مصادر إحالة لكل زوج domain, device_type، بحد أقصى 100 صف إجمالًا (LIMIT n BY + LIMIT).
LIMIT BY أيضًا مع الحدود والإزاحات السالبة. وعلى غرار بند LIMIT السالب، يمكنك استخدام قيم سالبة مع LIMIT BY لاختيار الصفوف من نهاية كل مجموعة.
id. بالنسبة إلى id = 1، نحصل على الصفَّين 11 و12؛ وبالنسبة إلى id = 2، تُرجَع كلا الصفَّين لأن المجموعة لا تضم سوى صفَّين.
id: حيث إن OFFSET -1 في النهاية يستبعد الصف الأخير من كل مجموعة، ثم يُبقي -1 في البداية على الصف الأخير مما تبقّى.
ويمكن أيضًا مزج قيم LIMIT وOFFSET ذات الإشارات المختلفة. على سبيل المثال، لاستبعاد الصف الأول من كل مجموعة ثم الاحتفاظ بآخر صفَّين مما تبقّى:
id = 1، يُتخطى الصف الأول (10)؛ ثم يُعاد الصفّان 11 و12 معًا. وبالنسبة إلى id = 2، يُتخطى الصف الأول (20)، فلا يبقى سوى 21.
LIMIT BY ALL
LIMIT BY ALL سرد جميع التعبيرات المحددة في SELECT التي ليست دوالًا تجميعية.
على سبيل المثال:
LIMIT BY أكبر عدد ممكن من الحقول غير التجميعية التي يمكن استخراجها منها.
على سبيل المثال:
أمثلة
SELECT * FROM limit_by ORDER BY id, val LIMIT 2 OFFSET 1 BY id النتيجة نفسها.
باستخدام LIMIT BY ALL: