SQL - کار با SELECT ORDER BY در دیتابیس
توی این مقاله، در باره ORDER BY
حرف میزنیم و نحوه مرتب کردن اطلاعات Query
رو با هم میبینیم. پس با ما همراه باشین تا نحوه کار با ORDER BY
و ویژگی هاش رو ببینیم.
مقدمه ای بر ORDER BY
وقتی از جدول بواسطه SELECT
اطلاعات رو میخونیم، این اطلاعات به شکل نا مشخصی برامون مرتب میشن. برای اینکه ترتیب ردیف های بازگشتی از Query
رو خودمون مشخص کنیم، از ORDER BY
استفاده توی SELECT
میکنیم. در واقع ORDER BY
به شما امکان مرتب کردن ردیف های برگشتی از دستور SELECT
رو به دو شکل افزایشی و یا کاهشی میده.
دستور ORDER BY
توی SELECT
به شکل زیر هست:
SELECT
select_list
FROM
table_name
ORDER BY
sort_expression1 [ASC | DESC],
...
sort_expressionN [ASC | DESC];
توی این دستور:
sort_expression1
: میتونه اسم یک ستون باشه و یا یک اصطلاح که شما قصد مرتب کردن ردیف ها براساس اون رو دارین. اگه نیاز دارین اطلاعات براساس بیش از یک ستون و یا اصطلاح مرتب بشن، اسم هرکدوم از ستون ها و یا اصطلاح ها رو با علامت کاما (",
") از هم جدا میکنیم.- در ادامه میتونیم از
ASC
برای مرتب کردن به شکل صعودی و یا ازDESC
برای مرتب کردن به شکل نزولی استفاده کنیم. اگه هیچکدوم از این موارد رو نذاریم، به شکل پیشفرض صعودی (ASC
) مرتب میشه.
مثال هایی از ORDER BY
بیاین با هم چنتا مثال از ORDER BY
ببینیم تا بهتر درکش کنیم:
فرض کنین ما یک جدول به اسم customer
داریم با یک سری اطلاعات پیشفرض توش که ساختار زیر رو داره:
1) استفاده از ORDER BY
برای مرتب کردن یک ستون
دستور زیر، اطلاعات جدول رو بهمون نشون میده. ما به وسیله ORDER BY
اطلاعات رو مرتب کردین.
SELECT
first_name,
last_name
FROM
customer
ORDER BY
first_name ASC;
و نتیجه به شکل زیر خواهد بود:
همونطور که توی نتیجه میبینین، اطلاعات براساس ستون first_name
به شکل صعودی مرتب شده که اینجا یعنی بر اساس حروف الفبا. همونطور که قبلا گفتیم، توی ORDER BY
مرتب سازی به شکل پیشفرض ASC
هست. پس درواقع توی دستور قبل، نیازی به گفتنش نبود. یعنی میتونیم مثل کد زیر بگیم و نتیجه یکسانی بگیریم:
SELECT
first_name,
last_name
FROM
customer
ORDER BY
first_name;
2) استفاده از ORDER BY
برای مرتب کردن اطلاعات به شکل نزولی:
توی دستور زیر، همون اطلاعات قبل رو داریم ولی این بار، اطلاعات رو براساس ستون last_name
و به شکل نزولی مرتب کردیم:
SELECT
first_name,
last_name
FROM
customer
ORDER BY
last_name DESC;
و نتیجه دستور بالا به شکل زیر خواهد بود:
3) استفاده از ORDER BY
برای مرتب سازی نتیجه Query
بر اساس بیش از یک ستون
دستور زیر، اطلاعات جدول رو بر اساس ستون first_name
صعودی و last_name
نزولی مرتب میکنه:
SELECT
first_name,
last_name
FROM
customer
ORDER BY
first_name ASC,
last_name DESC;
و نتیجه دستور بالا به شکل زیر خواهد بود:
همونطور که میبینین، در ابتدا ستون first_name
اهمیت داره که به شکل صعودی مرتب شده. ولی یه جا که دو نفر اسم مشابه دارن ( یعنی Kelly
) مرتب سازی بر اساس last_name
و نزولی اتفاق افتاده.
4) استفاده از ORDER BY
برای اصطلاحات
توی دیتابیس ما یکسری توابع داریم که یکی از اونها تابع LENGTH
هست. این تابع مقدار String
میپذیره و در جواب، طول رشته رو بهمون میده.
توی دستور زیر، ما مقادیر first_name
و طول هرکدوم رو از دیتابیس Query
میگیریم. به طول هرکدوم یک اسم میدیم. درواقع یک ستون فرضی میسازیم به اسم len
. در ادامه، نتیجه رو براساس همین ستون ( len
) و نزولی مرتب می کنیم. ( انگار بخوایم ببینیم اسم کی از همه کوچیکتره و به ترتیب بهمون نشونشون بده ). دستور به شکل زیر هست:
SELECT
first_name,
LENGTH(first_name) len
FROM
customer
ORDER BY
len DESC;
و نتیجه به شکل زیر خواهد بود:
در نتیجه، ORDER BY
برای مرتب سازی ردیف هایی هست که میخوایم از دیتابیس بخونیم. امیدوارم این مقاله براتون مفید باشه ;) .