کاربرد ORDER BY در دستورات SQL

از کلمه کلیدی ORDER BY زمانی استفاده می کنیم که بخواهیم Result-Set (خروجی یک دستور sql) را به صورت نزولی یا صعودی مرتب سازی کنیم. بنابراین از این دستور برای مرتب سازی نتایج استفاده می کنیم.

کلمه کلیدی ORDER BY به صورت پیش فرش به صورت صعودی مرتب سازی را انجام می دهد. برای مشخص کردن صعودی یا نزولی بودن از دو پارامتر ASC و DESC استفاده میکنیم.

  • پارامتر ASC: برای نمایش صعودی رکورد ها استفاده می شود.
  • پارامتر DESC: برای نمایش نزولی رکورد ها استفاده می شود.

سینتکس ORDER BY در عبارات SQL

شکل کلی دستور به صورت زیر است

SELECT * FROM tableName
    ORDER BY column1, column2, ... ASC | DESC

در ادامه مثالی از یک دستور واقعی ارائه می دهیم. فرض بر اینکه جدول اسامی زیر را داریم و هر اسم دارای یک شماره می باشد.

Priority Name Id
4 Morteza 1
2 Ali 2
3 Mahyar 3
1 Peyman 4

جدول بالا بسیار ساده و واضح می باشد و نیاز به توضیح نیست. ستون Priority اولیت هر سطر را مشخص می کند که از نوع عددی می باشد.

مرتب سازی صعودی و نزولی با ORDER BY

می خواهیم اسامی را بر اساس ستون Priority به صورت نزولی (زیاد به کم) مرتب سازی کنیم

SELECT * FROM Names ORDER BY Priority DESC;

 خروجی دستور بالا به صورت زیر می باشد.

Priority Name Id
4 Morteza 1
3 Mahyar 3
2 Ali 2
1 Peyman 4

 حالا اسامی را بر اساس ستون Priority با استفاده از پارامتر ASC به صورت صعودی (کم به زیاد) مرتب سازی می کنیم

SELECT * FROM Names ORDER BY Priority ASC

 خروجی به صورت زیر خواهد بود

Priority Name Id
1 Peyman 4
2 Ali 2
3 Mahyar 3
4 Morteza 1

 شما از ‌ORDER BY به صورت گسترده استفاده خواهید کرد. از ORDER BY می توان برای ستون های متنی، عددی و تاریخ استفاده کرد. برای مثال تمامی مطالب وبلاگ بر اساس تاریخ انتشار، صعودی یا نزولی نشان دهید. یا نمایش سفارش ها در یک بازه تاریخ معین بر اساس مبلغ سفارش به صورت صعودی یا نزولی.

مرتب سازی خروجی بر اساس ستون های مختلف

 همچنین می توانید مرتب سازی را برای بیشتر از یک ستون انجام دهید. یعنی مرتب سازی نزولی تمام سفارش ها بر اساس تاریخ و همچنین مرتب سازی صعودی قیمت سفارش ها. جدول زیر با نام Orders را در نظر بگیرید.

OrderPrice OrderDate OrderId
1500 2020-07-25 1
3500 2020-07-26 2
2500 2020-08-01 3
5000 2020-08-01 4

 خروجی را بر اساس تاریخ نزولی (جدید به قدیم) و قیمت صعودی (کم به زیاد)، مرتب سازی می کنیم. دستور به شکل زیر خواهد بود.

SELECT * FROM Orders ORDER BY OrderDate DESC, OrderPrice ASC;

خروجی به شکل زیر خواهد بود

OrderPrice OrderDate OrderId
2500 2020-08-01 3
5000 2020-08-01 4
3500 2020-07-26 2
1500 2020-07-25 1

 با اشتراک گذاری این مطلب در شبکه های اجتماعی مارا در بهبود و ادامه روند های آموزشی کمک کنید.