مقدمة عن ORDER BY
أمر ORDER BY يُستخدم لترتيب نتائج الاستعلام تصاعدياً أو تنازلياً.
بدون ORDER BY، لا يوجد ضمان لترتيب معين للنتائج.
الصيغة الأساسية
SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC];
حيث:
ASC- ترتيب تصاعدي (الافتراضي)DESC- ترتيب تنازلي
أمثلة عملية
1. الترتيب التصاعدي (ASC)
-- ترتيب حسب الراتب من الأقل للأعلى
SELECT name, salary
FROM employees
ORDER BY salary ASC;
-- ASC هو الافتراضي، يمكن حذفه:
SELECT name, salary
FROM employees
ORDER BY salary;
2. الترتيب التنازلي (DESC)
-- ترتيب حسب الراتب من الأعلى للأقل
SELECT name, salary
FROM employees
ORDER BY salary DESC;
3. الترتيب حسب النص
-- ترتيب أبجدي حسب الاسم
SELECT name, department
FROM employees
ORDER BY name ASC;
-- ترتيب أبجدي عكسي
SELECT name, department
FROM employees
ORDER BY name DESC;
4. الترتيب بأكثر من عمود
-- ترتيب حسب القسم، ثم حسب الراتب تنازلياً
SELECT name, department, salary
FROM employees
ORDER BY department ASC, salary DESC;
-- النتيجة: الأقسام مرتبة أبجدياً
-- وداخل كل قسم، الرواتب من الأعلى للأقل
كيف يعمل الترتيب المتعدد؟
عند الترتيب بأكثر من عمود، يتم الترتيب بالعمود الأول أولاً. إذا تساوت القيم، يُستخدم العمود الثاني، وهكذا.
5. الترتيب برقم العمود
-- يمكن استخدام رقم العمود بدلاً من اسمه
SELECT name, salary, department
FROM employees
ORDER BY 2 DESC; -- الترتيب بالعمود الثاني (salary)
-- ملاحظة: الترقيم يبدأ من 1
تحذير
استخدام أرقام الأعمدة قد يسبب مشاكل إذا تغير ترتيب الأعمدة في SELECT. يُفضل استخدام أسماء الأعمدة.
6. الترتيب مع WHERE
-- الموظفون في التقنية مرتبين حسب الراتب
SELECT name, salary
FROM employees
WHERE department = 'التقنية'
ORDER BY salary DESC;
7. الترتيب مع LIMIT
-- أعلى 3 رواتب
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 3;
-- أقل 3 رواتب
SELECT name, salary
FROM employees
ORDER BY salary ASC
LIMIT 3;
8. التعامل مع NULL
-- في معظم قواعد البيانات:
-- NULL تأتي في النهاية مع ASC
-- NULL تأتي في البداية مع DESC
SELECT name, department
FROM employees
ORDER BY department ASC;
-- في PostgreSQL يمكنك التحكم:
ORDER BY department ASC NULLS FIRST;
ORDER BY department ASC NULLS LAST;
ترتيب ORDER BY في الاستعلام
SELECT columns -- 1. ماذا نريد
FROM table -- 2. من أين
WHERE condition -- 3. تصفية
ORDER BY column -- 4. ترتيب
LIMIT n; -- 5. تحديد العدد
نصيحة
ORDER BY دائماً يأتي بعد WHERE وقبل LIMIT. هذا الترتيب ثابت ولا يمكن تغييره.
تمارين للتطبيق
- اعرض جميع الموظفين مرتبين حسب العمر تصاعدياً
- اعرض أعلى 5 رواتب في الشركة
- اعرض الموظفين مرتبين حسب القسم، ثم العمر
- اعرض أقل 3 رواتب في قسم التقنية
الخلاصة
ORDER BYلترتيب النتائجASCتصاعدي (الافتراضي)DESCتنازلي- يمكن الترتيب بأكثر من عمود
LIMITلتحديد عدد النتائج