عندما يبدأ ترقيم الصفحات من واحد، تُحسب الإزاحة بضرب رقم الصفحة ناقص واحد في حجم الصفحة. إذا كان حجم الصفحة عشرة عناصر، تبدأ الصفحة الأولى بإزاحة صفر، والثانية بإزاحة عشرة، والثالثة بإزاحة عشرين. الفكرة هي تجاوز جميع العناصر التي تخص الصفحات السابقة قبل عرض الصفحة المطلوبة.
الخطأ الشائع هو ضرب رقم الصفحة مباشرة في حجمها، مما يتجاوز صفحة إضافية. يجب أيضًا الفصل بين رقم الصفحة الذي يراه المستخدم وعدد الصفوف الذي تتعامل معه OFFSET. بعد حساب العدد في التطبيق أو يدويًا، نضعه في موضع الإزاحة ونستخدم حجم الصفحة في LIMIT. ويفترض هذا التقسيم ترتيبًا ثابتًا وبيانات لم تتغير أثناء تتبع الصفحات حتى تبقى الحدود التي نحسبها مطابقة للقائمة المتوقعة.
مثال
CREATE TABLE books_page_demo (id INT);
INSERT INTO books_page_demo VALUES (1), (2), (3), (4), (5), (6);
SELECT id FROM books_page_demo ORDER BY id LIMIT 2 OFFSET 4;
يعرض المثال الصفحة الثالثة عندما تحتوي كل صفحة على عنصرين.
باختصار: الإزاحة تساوي عدد الصفحات السابقة مضروبًا في حجم الصفحة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.