يتم استخدام استعلام حد MySQL لـ يقيد عدد الصفوف التي يتم إرجاعها من مجموعة النتائج، بدلاً من جلب المجموعة الكاملة في قاعدة بيانات MySQL. تعمل جملة Limit مع عبارة SELECT لإرجاع العدد المحدد من الصفوف فقط. يقبل هذا الاستعلام وسيطة واحدة أو وسيطتين فقط، ويجب أن تكون قيمهما صفرًا أو أي عدد صحيح موجب.
يعد ذلك ضروريًا في مثل هذه الحالة عندما يحتوي الجدول على آلاف الصفوف، أو إذا كنت تريد إرجاع البيانات التي تم إدراجها مؤخرًا فقط. بمعنى آخر، إذا لم تكن مهتمًا بالحصول على كافة الصفوف التي تم إرجاعها من الاستعلام، فاستخدم عبارة MySQL Limit مع عبارة SELECT. فهو يعمل على تحسين أداء الاستعلام وحتى إيقاف تعطل النظام عندما يحتوي الجدول على عدد كبير من البيانات.
للحصول على الصفوف المحددة فقط من الجدول، يستخدم MySQL التابع حد جملة، بينما يستخدم SQL قمة جملة، وتستخدم Oracle رونوم جملة مع يختار إفادة.
بناء الجملة
فيما يلي بناء جملة استخدام الاستعلام الحدي في ماي إس كيو إل :
SELECT column_list FROM table_name LIMIT offset, count;
في بناء الجملة أعلاه، يمكننا أن نرى:
قائمة_الأعمدة: إنه اسم العمود الذي تريد إرجاعه.
اسم الطاولة: إنه اسم الجدول الذي يحتوي على اسم العمود الخاص بك.
عوض: يحدد رقم الصف الذي تريد العودة منه. تبدأ إزاحة الصف من 0، وليس 1.
عدد: يحدد الحد الأقصى لعدد الصفوف التي تريد إرجاعها.
ويوضح التمثيل المرئي التالي الأمر بشكل أكثر وضوحًا:
ملاحظة: إذا قمت بتحديد وسيطة واحدة فقط باستخدام عبارة Limit، فإن MySQL تفترض ذلك لتحديد الحد الأقصى لعدد الصفوف لإرجاع الإخراج من مجموعة النتائج. في هذه الحالة، تكون وسيطات جملة الحد والإزاحة والعدد متكافئة.
بند LIMIT مع بند ORDER BY
يحتاج المستخدم إلى استخدام جملة Limit مع جملة Order By . بدون استخدام جملة Order By، سوف تحصل على النتيجة في أمر غير محدد . في هذه الحالة، من الصعب معرفة نتائج الاستعلام من أي صفوف. لذا، فهي عادة جيدة للاستخدام المجموعة حسب الجملة مع جملة Limit للحصول على الصفوف بترتيب معين.
يمكن استخدام بناء الجملة التالي للحصول على النتيجة بترتيب فريد:
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
أمثلة على حدود MySQL
دعونا نقوم بإنشاء جدول نموذجي في قاعدة البيانات يحتوي على البيانات التالية ونفهم كيفية عمل جملة الحد في MySQL باستخدام أمثلة مختلفة:
الجدول: الموظفين
1. حد MySQL لإرجاع الصفوف الأعلى أو الأدنى
يستخدم البيان التالي للحصول على أفضل خمسة موظفين أصغر سنا:
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
يقوم هذا البيان أولاً بفرز عمر الموظف باستخدام عبارة 'التجميع حسب'، ثم تقوم عبارة 'الحد' بإرجاع النتائج الخمسة الأولى. بعد تنفيذ الخطوات السابقة سنحصل على النتيجة التالية:
2. حد MySQL للحصول على نطاق من الصفوف باستخدام الإزاحة
في بعض الأحيان تريد الحصول على نتيجة بين نطاقات القيم. على سبيل المثال، لديك عدد كبير من الصفوف لعرض البيانات على التطبيقات، ثم قم بتقسيمها إلى صفحات، وكل صفحة تحتوي على 10 صفوف كحد أقصى في الجدول. في هذه الحالة، يمكنك استخدام الاستعلام التالي للحصول على نطاق من الصفوف:
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
تقوم هذه العبارة بإرجاع الصفوف التي تبدأ من الصف رقم 3 وتنتقل إلى الصف السابع كحد أقصى. كما أنه يقوم بفرز دخل الموظف من الأعلى إلى الأدنى. قم بتنفيذ الاستعلام، وسوف تحصل على الإخراج التالي:
تغيير إضافة عمود أوراكل
3. حد MySQL مع جملة WHERE
يمكن أيضًا استخدام MySQL Limit باستخدام عبارة WHERE . يقوم أولاً بالتحقق من الشرط المحدد في الجدول وينتج الصفوف المطابقة للشرط.
يحدد هذا الاستعلام أول خمسة موظفين تزيد أعمارهم عن 30 عامًا. هنا، استخدمنا أيضًا عبارة 'الترتيب حسب' لفرز الموظفين بترتيب تنازلي باستخدام دخلهم.
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
بعد تنفيذ العبارة أعلاه بنجاح، سنحصل على النتيجة التالية:
4. MySQL LIMIT للحصول على أعلى أو أدنى قيمة
في بعض الأحيان نريد الحصول على الصفوف ذات القيمة الأعلى أو الأدنى. في هذه الحالة، يمكننا استخدام جملة MySQL LIMIT التالية للحصول على النتيجة المتوقعة:
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
في بناء الجملة هذا، تقوم جملة LIMIT n-1, 1 بإرجاع صف واحد يبدأ من الصف n.
على سبيل المثال، يقوم الاستعلام التالي بإرجاع معلومات الموظف الذي لديه ثاني أعلى دخل:
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
تنفيذ البيان أعلاه، فإنه سوف يعطي الاستعلام التالي:
تجدر الإشارة إلى أن الاستعلام أعلاه يعمل فقط عندما لا يحتوي الجدول الخاص بك على موظفين لديهما بعض الدخل. في هذه الحالة سوف نستخدم DENSE_RANK () للحصول على نتيجة أكثر دقة.