بند مجزا 

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

پردازش پوچ 

DISTINCT با این نسخهها کار میکند NULL همانطور که اگر NULL یک مقدار خاص بودند, و NULL==NULL. به عبارت دیگر در DISTINCT نتایج, ترکیب های مختلف با NULL رخ می دهد تنها یک بار. این متفاوت است NULL پردازش در بسیاری از زمینه های دیگر.

جایگزین ها 

ممکن است با استفاده از همان نتیجه حاصل شود GROUP BY در سراسر همان مجموعه ای از ارزش ها به عنوان مشخص شده به عنوان SELECT بند, بدون استفاده از هر گونه توابع کل. اما چند تفاوت از وجود دارد GROUP BY رویکرد:

  • DISTINCT می توان همراه با GROUP BY.
  • چه زمانی ORDER BY حذف شده است و LIMIT تعریف شده است, پرس و جو متوقف می شود در حال اجرا بلافاصله پس از تعداد مورد نیاز از ردیف های مختلف خوانده شده است.
  • بلوک های داده خروجی به عنوان پردازش می شوند, بدون انتظار برای کل پرس و جو را به پایان برساند در حال اجرا.

محدودیت ها 

DISTINCT پشتیبانی نمی شود اگر SELECT حداقل یک ستون جداگانه دارد.

مثالها 

کلیک پشتیبانی با استفاده از DISTINCT و ORDER BY بند برای ستون های مختلف در یک پرس و جو. این DISTINCT بند قبل از اجرا ORDER BY بند بند.

جدول نمونه:

┌─a─┬─b─┐
│ 2 │ 1 │
│ 1 │ 2 │
│ 3 │ 3 │
│ 2 │ 4 │
└───┴───┘

هنگام انتخاب داده ها با SELECT DISTINCT a FROM t1 ORDER BY b ASC پرس و جو, ما نتیجه زیر را دریافت کنید:

┌─a─┐
│ 2 │
│ 1 │
│ 3 │
└───┘

اگر ما جهت مرتب سازی را تغییر دهیم SELECT DISTINCT a FROM t1 ORDER BY b DESC ما نتیجه زیر را دریافت می کنیم:

┌─a─┐
│ 3 │
│ 1 │
│ 2 │
└───┘

سطر 2, 4 قبل از مرتب سازی قطع شد.

نگاهی به این ویژگی پیاده سازی به حساب زمانی که برنامه نویسی نمایش داده شد.

Rating: 4.1 - 8 votes

Was this content helpful?
★★★★☆