مرتب سازی خروجی بر اساس موقعیت ستون در SQL

همانطور که پیش از این توضیح دادیم برای مرتب سازی می توانیم از نام ستون هایی استفاده کنیم که جلوی دستور SELECT فهرست شده اند. البته اجباری به استفاده از نام ستون های جلوی SELECT نیست، بلکه می توانیم از بقیه ستون های جدول که در دستور SELECT نیامده اند نیز برای مرتب سازی استفاده کنیم. همچنین اگر نام مستعاری را به یک ستون یا یک عبارت محاسبانی یا هر عبارت دیگری در دستور SELECT انتساب دادیم، می توانیم از نام مستعار برای مرتب سازی استفاده کنیم.

در کنار تمامی موارد بالا می توانیم از موقعیت ستون های جلوی دستور SELECT استفاده کنیم. به عبارت دیگر هر ستون یا نام مستعار یا عبارت محاسباتی که جلوی دستور SELECT قرار می گیرد از سمت چپ به راست دارای یک موقعیت عددی است که به ترتیب از عدد ۱ شروع می شود و تا تعداد ستون های جلوی SELECT ادامه پیدا می کندبه طور مثال در دستور زیر ستون first_name موقعیت ۱، ستون last_name موقعیت ۲ و ستون job_id موقعیت ۳ را دارد. پس می توانیم از این اعداد به جای نام ستون های معادل استفاده کنیم.

قطعه کد زیر بازنویسی شده کد بالا است که از موقعیت عددی ستون ها در جلوی دستور SELECT استفاده می کند. توجه کنید که بازهم اگر ASC یا DESC نوشته نشود به این معنی است که مرتب سازی به صورت پیشفرض صعودی خواهد بود ولی در کد زیر از DESC برای مرتب سازی نزولی استفاده کرده ایم.

مثالشناسه، نام، نام خانوادگی، شغل و تاریخ استخدام تمامی کامندهایی را پیدا کنید که شغل آنها یکی از مشاغل SA_MAN یا MK_MAN باشد. سپس بر اساس شناسه به صورت صعودی و بر اساس نام خانوادگی به صورت نزولی مرتب سازی کنید.

در کوئری بالا employee_id در موقعیت ۱ و last_name در موقعیت ۳ قرار دارد پس در ORDER BY از همین اعداد استفاده کرده ایم. همچنین از ASC استفاده کردیم، چون می خواهیم مرتب سازی صعودی باشد و از DESC استفاده کردیم تا مرتب سازی نزولی را انجام دهیم. ولی می دانیم که اجباری به نوشتن ASC نیست چون پیشفرض مرتب سازی صعودی است، پس می توانیم کد بالا را به صورت زیر بازنویسی کنیم.

همچنین چون می خواهیم شغل یا SA_MAN یا MK_MAN باشد، می توانیم کد بالا را با استفاده از عملگر OR به صورت زیر بازنویسی کنیم.

مثالشناسه، نام، نام خانوادگی و میزان حقوق تمامی کامندهایی را پیدا کنید که شغل آنها یکی از مشاغل SA_MAN یا MK_MAN باشد. سپس بر اساس شناسه و میزان حقوق به صورت صعودی مرتب سازی کنید.

در دستور بالا چون می خواهیم هم بر اساس شناسه و میزان حقوق به صورت صعودی مرتب سازی کنیم، از اعداد ۱ و ۴ به جای نام ستون ها استفاده کرده ایم و همچنین چون مرتب سازی پیشفرض به صورت صعودی است، دیگر ASC را ننوشته ایم.

مثالتمامی اطلاعات تمامی کارمندان را نشان دهید و سپس بر اساس میزان حقوق و نزولی مرتب سازی کنید.

اگر دستور DESCRIBE employees استفاده کنید خواهید دید که ستون salary در میان ستون ها، ستون شماره هشت است و همچنین چون از علامت * استفاده کردیم، پس به عبارتی تمامی ستون ها در جلوی SELECT فهرست شده اند، پس می توانیم از دستور بالا یا از دستور زیر برای مرتب سازی نزولی استفاده کنیم. به عبارت دیگر از موقعیت ستون در جدول به جای نام ستون استفاده کرده ایم.