الانتقال إلى المحتوى الرئيسي
يتيح لك OFFSET وFETCH استرجاع البيانات على دفعات. وهما يحددان كتلة من الصفوف تريد جلبها باستعلام واحد.
-- SQL Standard style:
[OFFSET offset_row_count {ROW | ROWS}] [FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES}]

-- MySQL/PostgreSQL style:
[LIMIT [n, ]m] [OFFSET offset_row_count]
يمكن أن تكون قيمة offset_row_count أو fetch_row_count رقمًا أو ثابتًا حرفيًا. ويمكنك حذف fetch_row_count؛ إذ تكون قيمته افتراضيًا 1. يحدد OFFSET عدد الصفوف التي يجب تخطيها قبل بدء إرجاع الصفوف من مجموعة نتائج الاستعلام. ويؤدي OFFSET n إلى تخطي أول n صفوف من النتيجة. كما أن OFFSET السالب مدعوم أيضًا: إذ يؤدي OFFSET -n إلى تخطي آخر n صفوف من النتيجة. وOFFSET الكسري مدعوم أيضًا: OFFSET n - إذا كان 0 < n < 1، فسيتم تخطي أول n * 100% من النتيجة. مثال: • OFFSET 0.1 - يتخطى أول 10% من النتيجة.
ملاحظة • يجب أن يكون الكسر رقم Float64 أقل من 1 وأكبر من صفر. • إذا نتج عن العملية الحسابية عدد كسري من الصفوف، فسيُقرَّب إلى العدد الصحيح التالي.
يحدد FETCH الحد الأقصى لعدد الصفوف التي يمكن أن تتضمنها نتيجة الاستعلام. يُستخدم الخيار ONLY لإرجاع الصفوف التي تأتي مباشرة بعد الصفوف التي تم تخطيها بواسطة OFFSET. وفي هذه الحالة، يكون FETCH بديلًا عن العبارة LIMIT. على سبيل المثال، الاستعلام التالي
SELECT * FROM test_fetch ORDER BY a OFFSET 1 ROW FETCH FIRST 3 ROWS ONLY;
مطابق تمامًا للاستعلام
SELECT * FROM test_fetch ORDER BY a LIMIT 3 OFFSET 1;
يُستخدم الخيار WITH TIES لإرجاع أي صفوف إضافية تتساوى في المركز الأخير ضمن مجموعة النتائج وفقًا لعبارة ORDER BY. على سبيل المثال، إذا كانت قيمة fetch_row_count مضبوطة على 5، ولكن كان هناك صفّان إضافيان يطابقان قيم أعمدة ORDER BY في الصف الخامس، فستتضمن مجموعة النتائج سبعة صفوف.
وفقًا للمعيار، يجب أن تسبق عبارة OFFSET عبارة FETCH إذا وُجدا معًا.
قد تعتمد الإزاحة الفعلية أيضًا على إعداد offset.

أمثلة

جدول الإدخال:
┌─a─┬─b─┐
│ 1 │ 1 │
│ 2 │ 1 │
│ 3 │ 4 │
│ 1 │ 3 │
│ 5 │ 4 │
│ 0 │ 6 │
│ 5 │ 7 │
└───┴───┘
استخدام الخيار ONLY:
Query
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS ONLY;
Response
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
└───┴───┘
استخدام الخيار WITH TIES:
Query
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS WITH TIES;
Response
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
│ 5 │ 7 │
└───┴───┘
آخر تعديل في ٢٥ يونيو ٢٠٢٦