آموزش DISTINCT در MySql
- توسط : علی حسین شهابی
- 0 نظر
سلام دوستان عزیز
صحبت امروز درباره استفاده از DISTINCT در MySql است .
با استفاده از DISTINCT شما می توانید رکورهای تکراری را از نتایج خروجی های خود حذف نمایید . در واقع شما زمانی که رکورهای یک جدول را SELECT می کنید ممکن است رکوردهای تکراری نیز در این میان باشند و شما لازم داشته باشید تا از هر رکورد تکراری تنها یکی از آنها را نگه دارید که این کار با استفاده از DISTINCT در MySql انجام می شود .
سینتکس آن مانند زیر می باشد :
SELECT DISTINCT
columns
FROM
table_name
WHERE
where_conditions;
بریم سراغ یک مثال تا بیشتر با DISTINCT آشنا شوید :
فرض کنید جدولی داریم به نام employees که می خواهیم از این جدول تمام نام های خانوادگی منحصر به فرد کارمندان را بیرون بکشیم . ابتدا با استفاده از دستور SELECT و بدون DISTINCT این کار را انجام می دهیم .
خروجی :
همانطور که مشاهده می کنید بعضی از کارمندان دارای فامیلی های مشابه هستند و این باعث شده در خروجی چند بار تکرار شوند (مانند Bondur و Firrelli )
حالا دستور SELECT را با استفاده از DISTINCT امتحان می کنیم تا از تکرار این فامیلی ها جلوگیری شود .
SELECT DISTINCT
lastname
FROM
employees
ORDER BY lastname;
خروجی :
خروجی عبارت بالا بدون تکرار فامیلی های تکرار شده می باشد و این دقیقا همان چیزی بود که از 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;
خروجی :
حالا دستور SELECT را بدون DISTINCT وارد می نماییم که در این صورت شهرهای تکراری نیز نمایش داده می شوند .
SELECT
state, city
FROM
customers
WHERE
state IS NOT NULL
ORDER BY state , city;
DISTINCT clause vs. GROUP BY clause
شما می توانید در مواقعی که در دستور SELECT از aggregate functions ها استفاده نکرده اید . به جای DISTINCT از GROUP BY نیز استفاده کنید . که دقیقا مانند DISTINCT رفتار می کند .
مثال :
در کوئری زیر برای گرفتن states های منحصر به فرد از GROUP BY استفاده شده است .
SELECT
state
FROM
customers
GROUP BY state;
خروجی :
همچنین شما می توانید نتیجه ی بالا را با DISTINCT نیز بگیرید :
SELECT DISTINCT
state
FROM
customers;
- می توان این نتیجه را گرفت که 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';
MySQL DISTINCT with LIMIT clause
همچنین می توانیم DISTINCT را با LIMIT به کار ببریم . در این حالت MySql عملیات پیدا کردن مقادیر را , زمانی که به تعداد مشخص شده برسد , قطع می کند .
مثال :
کوئری زیر ۵ states اولی که NULL نباشد را نمایش می دهد.
SELECT DISTINCT
state
FROM
customers
WHERE
state IS NOT NULL
LIMIT 5;
خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید.