English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، ستتعلم كيفية استرجاع عدد محدد من السجلات من الجدول.
في بعض الحالات، قد لا تحتاج إلى استرجاع جميع الصفوف في الاستعلام، مثل، إذا كنت ترغب في استرجاع العشرة أعضاء الأعضاء الجدد في المنظمة، أو الحصول على الثلاثة أفضل الطلاب بناءً على النقاط، وما إلى ذلك.
لمعالجة هذا النوع من الحالات، يمكنك استخدام جملة TOP مع جملة SELECT في SQL. ولكن، يتم دعم جملة TOP فقط من قبل نظامي قاعدة البيانات SQL Server و MS Access.
يقدم MySQL جملة LIMIT مكافئة، بينما يقدم Oracle جملة ROWNUM مع جملة SELECT لتقييد عدد الصفوف التي يتم استرجاعها.
جملة SQL TOP تستخدم لتقييد عدد الصفوف التي يتم استرجاعها. قواعد اللغة الأساسية لها هي:
SELECT TOP number | percent column_list FROM table_name;
في هذا المكان،column_listهذا هو قائمة من الأعمدة أو الأسماء الحقل في جدول البيانات التي يمكن الحصول على قيمها بترقيم الكوما (مثلname،age،country، إلخ). دعنا نرى كيف يعمل.
افترض أن لدينا في قاعدة البيانات لديناemployeesجدول يحتوي على السجلات التالية:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
تعود الجملة التاليةموظف (employees)الثلاثة الأعلى من حيث الدخل في الجدولموظف.
-- نحو جملة لغة قاعدة بيانات SQL Server SELECT TOP 3 * FROM employees ORDER BY salary DESC;
سيكون الناتج من الجمعية الناتجة كالتالي:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+
إذا كنت ترغب في استرجاع نسبة الأعمدة بدلاً من عدد الأعمدة الثابتة، يمكنك استخدام كلمة المفتاح PERCENT بعد القيمة الثابتة في جملة TOP. يتم تقريب القيم الصغيرة إلى القيمة الكاملة التالية (مثل، 1.5 تقريبًا إلى 2).
تعود الجملة التالية إلى 30 في المئة من الموظفين ذوي الدخل الأعلى.
-- نحو جملة لغة قاعدة بيانات SQL Server SELECT TOP 30 PERCENT * FROM employees ORDER BY salary DESC;
سيكون الناتج من الاستعلام التالي كالتالي:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
جملة LIMIT في MySQL لها نفس الدور مع جملة SQL TOP. لغتها الأساسية هي:
SELECT column_list FROM table_name LIMIT number;
تعود الجملة التاليةموظف (employees)الثلاثة الأعلى من حيث الدخل في الجدولموظف.
-- نحو جملة لغة قاعدة بيانات MySQL SELECT * FROM employees ORDER BY salary DESC LIMIT 3;
بعد التنفيذ، ستحصل على النتيجة التالية:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+
ملاحظة: في جملة SELECT، دائمًا ما يتمORDER BYجملة المبرمجة مع جملة LIMIT. وإلا، قد لا تحصل على النتائج المطلوبة.
يقبل جملة LIMIT المعلمة الثانية الاختيارية.
عندما يتم تحديد إثنين من المعلمات، المعلمة الأولى تحدد الموقع الإضافي للسطر الأول الذي يتم العودة إليه، أي النقطة البداية، بينما تحدد المعلمة الثانية عدد الأعمدة القصوى التي يتم العودة إليها. هو الموقع الإضافي للسطر الأول هو 0 (ليس 1).
لذلك، إذا كنت ترغب في العثور على الموظف الذي لديه راتب ثالث أعلى، يمكنك تنفيذ ما يلي:
-- لغة قواعد البيانات MySQL SELECT * FROM employees ORDER BY salary DESC LIMIT 2, 1;
بعد تنفيذ الأمر المذكور أعلاه، سيحصل على سجل واحد فقط في النتيجة:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+