داده های برگردانده شده توسط یک پرس و جو در SQL Server را مرتب می کند. از این بند برای موارد زیر استفاده کنید:
مجموعه نتایج یک پرس و جو را با لیست ستون مشخص شده مرتب کنید و به صورت اختیاری، ردیف های بازگشتی را به یک محدوده مشخص محدود کنید. ترتیبی که ردیف ها در یک مجموعه نتیجه برگردانده می شوند تضمین نمی شوند مگر اینکه یک بند ORDER BY مشخص شده باشد.
ترتیب اعمال مقادیر تابع رتبه بندی به مجموعه نتایج را تعیین کنید.
ORDER BY در عبارت SELECT/INTO یا CREATE TABLE AS SELECT (CTAS) در Azure Synapse Analytics یا Analytics Platform System (PDW) پشتیبانی نمی شود.
نحو
برای مشاهده نحو Transact-SQL برای SQL Server 2014 و نسخه های قبلی، به مستندات نسخه های قبلی مراجعه کنید.
استدلال ها
order_by_expression ستون یا عبارتی را مشخص می کند که مجموعه نتایج پرس و جو را بر اساس آن مرتب می کند. یک ستون مرتب سازی را می توان به عنوان نام یا نام مستعار ستون، یا یک عدد صحیح غیرمنفی که موقعیت ستون را در لیست انتخابی نشان می دهد، تعیین کرد.
ستون های مرتب سازی چندگانه را می توان مشخص کرد. نام ستون ها باید منحصر به فرد باشد. دنباله ستون های مرتب سازی در عبارت ORDER BY سازماندهی مجموعه نتایج مرتب شده را مشخص می کند. یعنی مجموعه نتایج بر اساس ستون اول مرتب می شود و سپس آن لیست مرتب شده توسط ستون دوم مرتب می شود و به همین ترتیب.
نام ستون های ارجاع شده در عبارت ORDER BY باید با ستون یا نام مستعار ستون در لیست انتخاب یا ستونی که در جدول مشخص شده در عبارت FROM بدون هیچ گونه ابهامی تعریف شده است، مطابقت داشته باشد. اگر عبارت ORDER BY به یک نام مستعار ستونی از لیست انتخاب اشاره می کند، نام مستعار ستون باید به صورت مستقل استفاده شود، و نه به عنوان بخشی از برخی عبارت در عبارت ORDER BY، برای مثال:
COLLATE collation_name مشخص می کند که عملیات ORDER BY باید بر اساس ترتیب بندی مشخص شده در collation_name انجام شود و نه بر اساس دسته بندی ستون که در جدول یا نما تعریف شده است. collation_name می تواند یک نام collation Windows یا یک نام collation SQL باشد. برای اطلاعات بیشتر، Collation and Unicode Support را ببینید. COLLATE فقط برای ستون هایی از نوع char، varchar، nchar و nvarchar قابل استفاده است.
ASC |DESC مشخص می کند که مقادیر در ستون مشخص شده باید به ترتیب صعودی یا نزولی مرتب شوند. ASC از کمترین مقدار به بالاترین مقدار مرتب می کند. DESC از بالاترین مقدار به کمترین مقدار مرتب می کند. ASC ترتیب مرتب سازی پیش فرض است. مقادیر صفر به عنوان پایین ترین مقادیر ممکن در نظر گرفته می شوند.
انحراف تعداد ردیف ها را برای پرش قبل از شروع بازگشت ردیف ها از بیان پرس و جو مشخص می کند. مقدار می تواند یک عدد صحیح یا عبارتی باشد که بیشتر از یا برابر با صفر باشد.
اعمال می شود: SQL Server 2012 (11. x) و بعداً و Azure SQL Database. s
Offset_Row_Count_Expression می تواند یک متغیر ، پارامتر یا زیرمجموعه ثابت باشد. هنگامی که از زیرمجموعه استفاده می شود ، نمی تواند به هر ستون تعریف شده در دامنه پرس و جو بیرونی مراجعه کند. یعنی نمی توان با پرس و جو بیرونی ارتباط داشت.
ردیف و ردیف مترادف هستند و برای سازگاری ANSI ارائه شده است.
در برنامه های اجرای پرس و جو ، مقدار شمارش ردیف افست در ویژگی افست اپراتور پرس و جو برتر نمایش داده می شود.
رفتن و آوردن فقط تعداد ردیف های بازگشت پس از پردازش بند افست را مشخص می کند. مقدار می تواند یک عدد صحیح یا عبارتی باشد که بیشتر از یا مساوی باشد.
در مورد: SQL Server 2012 (11. x) و بعد از آن و Azure SQL Database اعمال می شود.
fetch_row_count_expression می تواند یک متغیر ، پارامتر یا زیر قطبی ثابت باشد. هنگامی که از زیرمجموعه استفاده می شود ، نمی تواند به هر ستون تعریف شده در دامنه پرس و جو بیرونی مراجعه کند. یعنی نمی توان با پرس و جو بیرونی ارتباط داشت.
اول و بعدی مترادف هستند و برای سازگاری ANSI ارائه شده است.
ردیف و ردیف مترادف هستند و برای سازگاری ANSI ارائه شده است.
در برنامه های اجرای پرس و جو ، مقدار شمارش ردیف افست در ردیف ها یا ویژگی های برتر اپراتور پرس و جو برتر نمایش داده می شود.
بهترین روشها
از مشخص کردن اعداد صحیح در بند به عنوان بازنمایی موقعیت ستون ها در لیست انتخاب خودداری کنید. به عنوان مثال ، اگرچه بیانیه ای مانند Select ProductID ، نام از تولید. سفارش تولید توسط 2 معتبر است ، این بیانیه به آسانی توسط دیگران در مقایسه با مشخص کردن نام ستون واقعی درک نمی شود. علاوه بر این ، تغییر در لیست انتخاب ، مانند تغییر ترتیب ستون یا اضافه کردن ستون های جدید ، برای جلوگیری از نتایج غیر منتظره ، نیاز به اصلاح ترتیب توسط بند دارد.
در یک عبارت برتر (N) ، همیشه از یک بند به بند استفاده کنید. این تنها راه برای پیش بینی است که نشان می دهد ردیف ها تحت تأثیر بالا قرار دارند. برای اطلاعات بیشتر ، به بالا (Transact-SQL) مراجعه کنید.
قابلیت همکاری
هنگامی که با انتخاب استفاده می شود. به داخل یا درجبرای وارد کردن ردیف ها از منبع دیگر ، عبارت را انتخاب کنید ، بند توسط بند تضمین نمی کند که ردیف ها به ترتیب مشخص درج شده اند.
استفاده از Offset و Fetch در یک دید ، ویژگی به روزرسانی نمای را تغییر نمی دهد.
محدودیت ها و محدودیت ها
هیچ محدودیتی برای تعداد ستون ها به ترتیب بند وجود ندارد. با این حال ، اندازه کل ستون های مشخص شده به ترتیب بند نمی تواند از 8،060 بایت تجاوز کند.
ستونهای نوع ntext ، متن ، تصویر ، جغرافیا ، هندسه و XML را نمی توان به صورت بند به صورت بند استفاده کرد.
یک عدد صحیح یا ثابت نمی تواند مشخص شود که order_by_expression در یک عملکرد رتبه بندی ظاهر شود. برای اطلاعات بیشتر ، به بند (Transact-SQL) مراجعه کنید.
اگر یک نام جدول در بند FROM باشد ، فقط از نام نام مستعار می توان برای واجد شرایط بودن ستون های خود در بند به ترتیب استفاده کرد.
نام ستون و نام مستعار مشخص شده در بند توسط بند باید در لیست انتخاب تعریف شود اگر عبارت SELECT شامل یکی از بندهای زیر یا اپراتورها باشد:
علاوه بر این ، هنگامی که این بیانیه شامل یک اتحادیه است ، به جز ، یا اپراتور تقاطع ، نام ستون یا نام مستعار ستون باید در لیست انتخاب اولین پرس و جو (سمت چپ) مشخص شود.
در یک پرس و جو که از اتحادیه استفاده می کند ، به جز اپراتورهای تقاطع ، سفارش فقط در پایان بیانیه مجاز است. این محدودیت فقط مربوط به زمانی است که اتحادیه را مشخص می کنید ، به جز ، و در یک پرس و جو سطح بالا و نه در یک زیرمجموعه. بخش مثالهایی را که در زیر آمده است مشاهده کنید.
بند توسط ترتیب در نمایش ها ، توابع درون خطی ، جداول مشتق شده و زیرمجموعه ها معتبر نیست ، مگر اینکه بندهای بالا یا جبران و واکشی نیز مشخص شود. هنگامی که سفارش در این اشیاء استفاده می شود ، این بند فقط برای تعیین ردیف های برگشتی توسط بند بالا یا بندهای جبران و واکشی استفاده می شود. بند براساس بند ، نتایج سفارش داده شده را هنگام پرس و جو از این سازه ها تضمین نمی کند ، مگر اینکه سفارش توسط خود در پرس و جو نیز مشخص شود.
Offset و Fetch در نماهای ایندکس شده یا از دیدگاه پشتیبانی نمی شوند که با استفاده از بند گزینه Check Lause تعریف شده است.
افست و واکشی را می توان در هر پرس و جو مورد استفاده قرار داد که اجازه می دهد تا با محدودیت های زیر سفارش دهید و سفارش دهید:
بند بیش از جبران و واکشی پشتیبانی نمی کند.
افست و واکشی را نمی توان به طور مستقیم در بیانیه های درج ، به روزرسانی ، ادغام و حذف بیان کرد ، اما می تواند در یک زیرمجموعه تعریف شده در این گفته ها مشخص شود. به عنوان مثال ، در عبارت insert به عنوان SELECT ، افست و واکشی را می توان در عبارت SELECT مشخص کرد.
در یک پرس و جو که از اتحادیه استفاده می کند ، به جز اپراتورهای تقاطع ، جبران و واکشی فقط در پرس و جو نهایی که ترتیب نتایج پرس و جو را مشخص می کند ، قابل مشخص است.
بالا نمی تواند با جبران و واکشی در همان بیان پرس و جو (در همان دامنه پرس و جو) ترکیب شود.
با استفاده از افست و واکشی برای محدود کردن ردیف های برگشتی
توصیه می کنیم به جای بند بالا برای اجرای یک راه حل صفحه بندی پرس و جو و محدود کردن تعداد ردیف های ارسال شده به یک برنامه مشتری ، از بندهای افست و واکشی استفاده کنید.
استفاده از Offset و Fetch به عنوان یک راه حل صفحه بندی نیاز به اجرای پرس و جو برای هر "صفحه" داده های برگشتی به برنامه مشتری دارد. به عنوان مثال ، برای بازگشت نتایج یک پرس و جو در افزایش 10 ردیف ، باید یک بار پرس و جو را برای بازگشت ردیف های 1 تا 10 اجرا کنید و سپس دوباره پرس و جو را اجرا کنید تا ردیف های 11 تا 20 و غیره را برگردانید. هر پرس و جو مستقل است و به هیچ وجه به یکدیگر مربوط نمی شود. این بدان معنی است که برخلاف استفاده از مکان نما که در آن پرس و جو یک بار اجرا می شود و حالت در سرور نگهداری می شود ، برنامه مشتری مسئولیت ردیابی وضعیت را بر عهده دارد. برای دستیابی به نتایج پایدار بین درخواست های پرس و جو با استفاده از افست و واکشی ، شرایط زیر باید برآورده شود:
داده های اساسی که توسط پرس و جو استفاده می شود نباید تغییر کند. یعنی ، یا ردیف هایی که توسط پرس و جو وجود دارد به روز نمی شوند یا کلیه درخواست های مربوط به صفحات از پرس و جو در یک معامله واحد با استفاده از عکس فوری یا جداسازی معامله سریال قابل اجرا هستند. برای کسب اطلاعات بیشتر در مورد این سطوح جداسازی معامله ، به سطح جداسازی معامله (Transact-SQL) مراجعه کنید.
بند توسط بند شامل یک ستون یا ترکیبی از ستون ها است که تضمین می شود بی نظیر است.
مثال "اجرای چندین نمایش داده شده در یک معامله واحد" را در بخش مثالها بعداً در این موضوع مشاهده کنید.
اگر برنامه های اجرای مداوم در راه حل صفحه بندی شما مهم هستند ، استفاده از Optimize را برای اشاره به پرس و جو برای پارامترهای جبران و واکشی در نظر بگیرید. بعداً در این موضوع به "مشخص کردن عبارات برای مقادیر جبران و واکشی" مراجعه کنید. برای کسب اطلاعات بیشتر در مورد بهینه سازی ، به Query نکات (Trancact-SQL) مراجعه کنید.
مثال ها
| دسته بندی | عناصر نحوی برجسته |
| نحو اساسی | سفارش توسط |
| تعیین نظم صعودی و نزولی | DESC • ASC |
| مشخص کردن یک جمع | جمع کردن |
| تعیین یک دستور مشروط | بیان مورد |
| با استفاده از سفارش در یک عملکرد رتبه بندی | توابع رتبه بندی |
| محدود کردن تعداد ردیف های برگشتی | افست • واکشی |
| استفاده از سفارش توسط اتحادیه ، به جز ، و تقاطع | اتحاد. اتصال |
نحو اساسی
مثالهایی در این بخش عملکرد اصلی سفارش را با استفاده از حداقل نحو مورد نیاز نشان می دهد.
الف) مشخص کردن یک ستون واحد تعریف شده در لیست انتخاب
مثال زیر نتیجه تعیین شده توسط ستون Numeric ProductId را سفارش می دهد. از آنجا که یک ترتیب مرتب سازی خاص مشخص نشده است ، از پیش فرض (سفارش صعودی) استفاده می شود.
ب - تعیین ستونی که در لیست انتخاب تعریف نشده است
مثال زیر نتیجه تعیین شده توسط ستونی را که در لیست انتخاب گنجانده نشده است ، سفارش می دهد ، اما در جدول مشخص شده در بند FROM تعریف شده است.
ج - تعیین نام مستعار به عنوان ستون مرتب سازی
مثال زیر ستون alias schemaname ستون را به عنوان ستون مرتب سازی ترتیب می دهد.
D. مشخص کردن یک عبارت به عنوان ستون مرتب سازی
مثال زیر از یک عبارت به عنوان ستون مرتب سازی استفاده می کند. این عبارت با استفاده از تابع DatePart برای مرتب کردن نتیجه تعیین شده در سالی که کارمندان در آن استخدام شده اند تعریف شده است.
مشخص کردن نظم مرتب سازی صعودی و نزولی
الف - تعیین یک سفارش نزولی
مثال زیر نتیجه تعیین شده توسط ستون عددی ProductId را به ترتیب نزولی سفارش می دهد.
ب - تعیین یک سفارش صعودی
مثال زیر نتیجه تعیین شده توسط ستون نام را به ترتیب صعودی سفارش می دهد. شخصیت ها به صورت الفبایی طبقه بندی می شوند ، نه عددی. یعنی 10 نوع قبل از 2.
ج - مشخص کردن هر دو ترتیب صعودی و نزولی
مثال زیر نتیجه تعیین شده توسط دو ستون را سفارش می دهد. مجموعه نتیجه پرس و جو ابتدا به ترتیب صعودی توسط ستون FirstName مرتب شده و سپس توسط ستون LastName به ترتیب نزولی مرتب می شود.
مشخص کردن یک جمع
مثال زیر نشان می دهد که چگونه مشخص کردن یک جمع به ترتیب بند می تواند ترتیب بازگرداندن نتایج پرس و جو را تغییر دهد. یک جدول ایجاد شده است که حاوی ستونی است که با استفاده از یک جمع کننده حساس و حساس به لهجه تعریف شده است. مقادیر با انواع مختلفی از تفاوتهای موردی و لهجه درج می شوند. از آنجا که یک مجموعه به صورت بند به ترتیب مشخص نشده است ، اولین پرس و جو هنگام مرتب سازی مقادیر از مجموعه ستون استفاده می کند. در پرس و جو دوم ، یک مجموعه حساس به مورد حساس به لهجه به ترتیب توسط بند مشخص شده است که ترتیب بازگرداندن ردیف ها را تغییر می دهد.
تعیین یک دستور مشروط
مثالهای زیر از عبارت Case به ترتیب به صورت بند استفاده می کنند تا به طور مشروط ترتیب مرتب سازی ردیف ها را بر اساس مقدار ستون معین تعیین کنید. در مثال اول ، مقدار موجود در ستون SalariedFlag از جدول HumanResureces. Employee ارزیابی می شود. کارمندانی که SaliedFlag را به 1 تنظیم کرده اند ، به ترتیب توسط رده های تجاری به ترتیب نزولی بازگردانده می شوند. کارمندانی که SaliedFlag را به 0 تنظیم کرده اند ، به ترتیب توسط konwerdentityid به ترتیب صعودی بازگردانده می شوند. در مثال دوم ، مجموعه نتیجه توسط سرزمین ستون سفارش داده می شود که ستون CountryRegionName برابر با "ایالات متحده" و توسط CountryRegionName برای همه ردیف های دیگر است.
با استفاده از سفارش در یک عملکرد رتبه بندی
مثال زیر از بند توسط بند در توابع رتبه بندی row_number ، رتبه ، متراکم_نک و ntile استفاده می کند.
محدود کردن تعداد ردیف های برگشتی
مثالهای زیر از افست و واکشی برای محدود کردن تعداد ردیف های برگشتی توسط یک پرس و جو استفاده می کنند.
در مورد: SQL Server 2012 (11. x) و بعد از آن و Azure SQL Database اعمال می شود.
الف - مشخص کردن ثابت عدد صحیح برای مقادیر جبران و واکشی
مثال زیر یک عدد صحیح را به عنوان مقدار بندهای جبران و واکشی مشخص می کند. اولین پرس و جو تمام ردیف های مرتب شده توسط بخش ستون را برمی گرداند. نتایج برگشتی توسط این پرس و جو را با نتایج دو نمایش داده شده که از آن پیروی می کنند مقایسه کنید. پرس و جو بعدی از بند 5 ردیف جبران شده استفاده می کند تا از 5 ردیف اول پرش کند و تمام ردیف های باقی مانده را برگرداند. پرس و جو نهایی از بند افست 0 ردیف برای شروع با ردیف اول استفاده می کند و سپس از 10 ردیف بعدی Fetch فقط برای محدود کردن ردیف های برگشتی به 10 ردیف از مجموعه نتیجه مرتب شده استفاده می کند.
ب - مشخص کردن متغیرها برای مقادیر جبران و واکشی
مثال زیر متغیرهای RowStoskip و FetchRows را اعلام می کند و این متغیرها را در بندهای جبران و واکشی مشخص می کند.
ج - مشخص کردن عبارات برای مقادیر جبران و واکشی
مثال زیر از عبارت StartingRownumber - 1 برای مشخص کردن مقدار افست و عبارت endingRownumber - startingRownumber + 1 برای مشخص کردن مقدار Fetch استفاده می کند. علاوه بر این ، اشاره پرس و جو ، بهینه سازی ، مشخص شده است. این اشاره را می توان برای تهیه یک مقدار خاص برای یک متغیر محلی هنگام تهیه پرس و جو و بهینه سازی استفاده کرد. این مقدار فقط در هنگام بهینه سازی پرس و جو استفاده می شود ، و نه در هنگام اجرای پرس و جو. برای اطلاعات بیشتر ، به Query نکات (Transact-SQL) مراجعه کنید.
D. مشخص کردن یک زیرمجاز ثابت برای مقادیر جبران و واکشی
مثال زیر از یک زیرپرس و جوی اسکالر ثابت برای تعریف مقدار عبارت FETCH استفاده می کند. درخواست فرعی یک مقدار واحد را از ستون PageSize در جدول dbo. AppSettings برمی گرداند.
E. اجرای چندین پرس و جو در یک تراکنش
مثال زیر یکی از روش های پیاده سازی راه حل صفحه بندی را نشان می دهد که تضمین می کند نتایج پایدار در همه درخواست های پرس وجو بازگردانده می شوند. پرس و جو در یک تراکنش واحد با استفاده از سطح جداسازی عکس فوری اجرا می شود و ستون مشخص شده در عبارت ORDER BY منحصر به فرد بودن ستون را تضمین می کند.
استفاده از سفارش توسط اتحادیه ، به جز ، و تقاطع
هنگامی که یک پرس و جو از عملگرهای UNION، EXCEPT یا INTERSECT استفاده می کند، عبارت ORDER BY باید در انتهای عبارت مشخص شود و نتایج پرس و جوهای ترکیبی مرتب شوند. مثال زیر همه محصولات قرمز یا زرد را برمی گرداند و این لیست ترکیبی را بر اساس ستون ListPrice مرتب می کند.
مثال ها: Azure Synapse Analytics and Analytics Platform System (PDW)
مثال زیر ترتیب یک نتیجه تنظیم شده توسط ستون عددی EmployeeKey را به ترتیب صعودی نشان می دهد.
مثال زیر یک نتیجه را که توسط ستون عددی EmployeeKey تنظیم شده است به ترتیب نزولی سفارش می دهد.
مثال زیر یک نتیجه تنظیم شده توسط ستون LastName را سفارش می دهد.
مثال زیر بر اساس دو ستون مرتب می شود. این کوئری ابتدا بر اساس ستون FirstName به ترتیب صعودی مرتب می شود و سپس مقادیر رایج FirstName را به ترتیب نزولی بر اساس ستون LastName مرتب می کند.
آموزش استراتژی معاملاتی...
ما را در سایت آموزش استراتژی معاملاتی دنبال می کنید
برچسب :
نویسنده : ملیحه نصیری
بازدید : <-PostHit->
تاريخ : جمعه
22 ارديبهشت
1402 ساعت: 12:07