انتقل إلى محتوى الدرس

Multi Column Sorting Priority الترتيب المتعدد بعدة أعمدة

رتّب النتائج حسب عمود رئيسي واحسم التعادل بأعمدة فرعية لكل منها اتجاه ASC أو DESC مستقل.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يمكنك تمرير عدة أعمدة مفصولة بفواصل إلى جملة ORDER BY؛ حيث يرتّب MySQL الصفوف وفق العمود الأول أولاً، ولا يلجأ إلى العمود الثاني إلا لكسر التعادل بين الصفوف المتساوية في العمود الأول.

  • استقلالية اتجاه كل عمود: يخص اتجاه ASC أو DESC العمود الذي يسبقه مباشرة فقط! فكتابة ORDER BY dept_id, salary DESC تعني ترتيب رقم القسم تصاعدياً ASC وترتيب الراتب تنازلياً DESC داخل كل قسم.
  • كسر التعادل بالمفتاح الأساسي: أضف دائماً عموداً فريداً مثل المفتاح الأساسي id ASC كآخر عمود في الترتيب لضمان ثبات مواقع الصفوف المتساوية عند تقسيم الصفحات.

يدعم MySQL 8 الفهارس التنازلية المختلطة Descending Indexes لتسريع الترتيب المتعدد دون الحاجة لعملية فرز إضافية filesort.

SQL
-- Sort by department ascending, then highest salary, then id
SELECT emp_id, full_name, dept_id, salary
FROM employees
WHERE is_active = 1
ORDER BY dept_id ASC, salary DESC, emp_id ASC;