آموزش DISTINCT در MySql

علی حسین شهابی

1395/8/14

نظر0

سلام دوستان عزیز

صحبت امروز درباره استفاده از  DISTINCT در MySql  است .

با استفاده از DISTINCT شما می توانید  رکورهای تکراری را از نتایج خروجی های خود حذف نمایید . در واقع شما زمانی که رکورهای یک جدول را SELECT می کنید ممکن است رکوردهای تکراری نیز در این میان باشند و شما لازم داشته باشید تا از هر رکورد تکراری تنها یکی از آنها را نگه دارید  که این کار با استفاده از DISTINCT در MySql انجام می شود .

سینتکس آن مانند زیر می باشد :‌

SELECT DISTINCT
    columns
FROM
    table_name
WHERE
    where_conditions;

بریم سراغ یک مثال تا بیشتر با DISTINCT آشنا شوید :‌

فرض کنید جدولی داریم به نام employees که می خواهیم از این جدول تمام نام های خانوادگی منحصر به فرد  کارمندان را بیرون بکشیم . ابتدا با استفاده از دستور SELECT و بدون DISTINCT این کار را انجام می دهیم .

خروجی :‌

آموزش DISTINCT

آموزش DISTINCT

 

همانطور که مشاهده می کنید بعضی از کارمندان دارای فامیلی های مشابه هستند و این باعث شده در خروجی چند بار تکرار شوند (مانند Bondur و Firrelli )

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

SELECT DISTINCT
    lastname
FROM
    employees
ORDER BY lastname;

 

خروجی :

آموزش DISTINCT

آموزش DISTINCT

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

  • اگر NULL هم جزو مقادیر فامیلی بود باز فرقی نمی کرد و DISTINCT فقط یک  مقدار NULL نشان می داد و از تکرار آنها جلوگیری می کرد .

 

MySQL DISTINCT with multiple columns

شما می توانید DISTINCT را برای بیش از یک فیلد نیز به کار ببرید. در این صورت , MySql از ترکیب این فیلدها برای  شناسایی رکوردهای تکراری استفاده می کند .

مثال :‌

می خواهید از جدول customers لیست فیلدهای city و state  که منحصر به فرد باشن را نمایش دهیم .

 

SELECT DISTINCT
    state, city
FROM
    customers
WHERE
    state IS NOT NULL
ORDER BY state , city;

 

خروجی :

آموزش DISTINCT

آموزش DISTINCT

حالا دستور SELECT را بدون DISTINCT وارد می نماییم که در این صورت شهرهای تکراری نیز نمایش داده می شوند .

 

SELECT 
    state, city
FROM
    customers
WHERE
    state IS NOT NULL
ORDER BY state , city;

 

آموزش DISTINCT

آموزش DISTINCT

DISTINCT clause vs. GROUP BY clause

شما می توانید در مواقعی که در دستور SELECT از aggregate functions ها  استفاده نکرده اید . به جای DISTINCT از GROUP BY نیز استفاده کنید . که دقیقا مانند DISTINCT رفتار می کند .

مثال :‌

در کوئری زیر برای گرفتن  states های منحصر به فرد از GROUP BY استفاده شده است .

SELECT 
    state
FROM
    customers
GROUP BY state;

خروجی :‌

آموزش DISTINCT

آموزش DISTINCT

همچنین شما می توانید نتیجه ی بالا را با DISTINCT نیز بگیرید :‌

SELECT DISTINCT
    state
FROM
    customers;

 

آموزش DISTINCT

آموزش DISTINCT

  • می توان این نتیجه را گرفت که DISTINCT یک مورد خاص از GROUP BY است .
  • تفاوت بین DISTINCT و GROUP BY در ننحوه SORT کردن خورجی کوئری است .

 

MySQL DISTINCT and aggregate function

شما می توانید DISTINCT را با aggregate function هایی مانند SUM, AVG  و COUNT … استفاده نمایید .

مثال :‌

با استفاده از کوئری زیر تعداد state های منحصر به فرد کشور آمریکا را نمایش می دهیم .

SELECT 
    COUNT(DISTINCT state)
FROM
    customers
WHERE
    country = 'USA';

 

آموزش DISTINCT

آموزش DISTINCT

MySQL DISTINCT with LIMIT clause

همچنین می توانیم DISTINCT را با LIMIT به کار ببریم . در این حالت MySql عملیات پیدا کردن مقادیر را , زمانی که به تعداد مشخص شده برسد , قطع می کند .

مثال :‌

کوئری زیر ۵ states اولی که NULL نباشد را نمایش می دهد.

SELECT DISTINCT
    state
FROM
    customers
WHERE
    state IS NOT NULL
LIMIT 5;

 

آموزش DISTINCT

آموزش DISTINCT

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

اینستاگرام علی حسین شهابی لینکدین علی حسین شهابی

0 نظر

ارسال نظر جدید

 
Not signed in

کلیه حقوق مادی و معنوی , متعلق به سایت (Alihossein.ir)می باشد ,انتشار مطالب بدون ذکر منبع از نظر اخلاقی و شرعی صحیح نمی باشد.