شرح صفوف ومحتوى الفقرة
يمكنك تمرير عدة أعمدة مفصولة بفواصل إلى جملة 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;