SELECT DISTINCT
SELECT DISTINCT در SQL
دریافت مقادیر منحصربهفرد و حذف مقادیر تکراری از نتایج
در SQL ممکن است یک ستون دارای مقادیر تکراری باشد. اگر بخواهیم در نتیجه پرسوجو فقط مقادیر متفاوت و منحصربهفرد را مشاهده کنیم، میتوانیم از عبارت SELECT DISTINCT استفاده کنیم.
SELECT DISTINCT چیست؟
کلمه کلیدی DISTINCT همراه با دستور SELECT برای حذف مقادیر تکراری از نتیجه استفاده میشود.
ساختار کلی آن به شکل زیر است:
SELECT DISTINCT column_name
FROM table_name;
در این ساختار، column_name نام ستونی است که میخواهیم مقادیر منحصربهفرد آن را مشاهده کنیم و table_name نام جدول موردنظر است.
تفاوت SELECT و SELECT DISTINCT
فرض کنید جدولی به نام Customers داریم که ستون Country آن کشور محل زندگی مشتریان را نشان میدهد.
اگر از دستور معمولی SELECT استفاده کنیم:
SELECT Country
FROM Customers;
ممکن است نتیجه شامل مقادیر تکراری باشد:
| Country |
|---|
| Iran |
| UK |
| Iran |
| Germany |
| UK |
| Iran |
همانطور که مشاهده میکنید، نام بعضی کشورها چند بار تکرار شده است.
حالا اگر از DISTINCT استفاده کنیم:
SELECT DISTINCT Country
FROM Customers;
نتیجه فقط شامل مقادیر منحصربهفرد خواهد بود:
| Country |
|---|
| Iran |
| UK |
| Germany |
SELECT میتواند مقادیر تکراری را در نتیجه نمایش دهد، اما SELECT DISTINCT مقادیر تکراری را حذف میکند و هر مقدار را فقط یک بار نمایش میدهد.
SELECT DISTINCT روی چند ستون
DISTINCT را میتوان روی بیش از یک ستون نیز استفاده کرد. در این حالت، SQL ترکیب مقادیر ستونهای انتخابشده را بررسی میکند و فقط ترکیبهای منحصربهفرد را در نتیجه نمایش میدهد.
برای مثال:
SELECT DISTINCT Country, City
FROM Customers;
در این مثال، SQL ترکیب کشور و شهر را بررسی میکند. بنابراین اگر یک شهر در یک کشور چند بار تکرار شده باشد، همان ترکیب فقط یک بار نمایش داده میشود.
مثال عملی با دو ستون
فرض کنید دادههای جدول به شکل زیر باشند:
| Country | City |
|---|---|
| Iran | Tehran |
| Iran | Tehran |
| Iran | Shiraz |
| UK | London |
| UK | London |
با اجرای دستور زیر:
SELECT DISTINCT Country, City
FROM Customers;
نتیجه به شکل زیر خواهد بود:
| Country | City |
|---|---|
| Iran | Tehran |
| Iran | Shiraz |
| UK | London |
دقت کنید که DISTINCT فقط زمانی ردیف را تکراری در نظر میگیرد که ترکیب تمام ستونهای انتخابشده یکسان باشد.
DISTINCT و مقدار NULL
اگر ستونی دارای چند مقدار NULL باشد، DISTINCT مقدار NULL را نیز بهعنوان یک مقدار در نظر میگیرد و در نتیجه معمولاً فقط یک بار نمایش میدهد.
برای مثال:
SELECT DISTINCT City
FROM Customers;
اگر چند ردیف مقدار NULL داشته باشند، نتیجه DISTINCT شامل یک مقدار NULL خواهد بود، نه چند مقدار تکراری NULL.
DISTINCT دادههای موجود در جدول را حذف نمیکند. این عبارت فقط مقادیر تکراری را از نتیجه پرسوجو حذف میکند. اطلاعات اصلی جدول بدون تغییر باقی میمانند.
چه زمانی از SELECT DISTINCT استفاده کنیم؟
هر زمان که بخواهیم فهرستی از مقادیر منحصربهفرد یک ستون یا ترکیب منحصربهفرد چند ستون را مشاهده کنیم، SELECT DISTINCT میتواند مفید باشد.
- مشاهده فهرست کشورهای موجود در جدول مشتریان
- مشاهده شهرهای مختلف ثبتشده در پایگاه داده
- مشاهده دستهبندیهای مختلف محصولات
- پیدا کردن ترکیبهای منحصربهفرد از چند ستون
- تهیه فهرستی بدون مقادیر تکراری برای استفاده در گزارشها
یک مثال دیگر
فرض کنید جدول Products دارای ستون Category باشد و چند محصول در یک دسته قرار گرفته باشند. برای مشاهده دستهبندیهای موجود بدون تکرار میتوان نوشت:
SELECT DISTINCT Category
FROM Products;
در نتیجه، هر دستهبندی فقط یک بار نمایش داده خواهد شد؛ حتی اگر محصولات زیادی در آن دسته قرار داشته باشند.
در این درس با SELECT DISTINCT آشنا شدیم. DISTINCT برای حذف مقادیر تکراری از نتیجه یک پرسوجوی SELECT استفاده میشود و به ما اجازه میدهد فقط مقادیر منحصربهفرد را مشاهده کنیم.
یاد گرفتیم که DISTINCT میتواند روی یک ستون یا چند ستون استفاده شود و در حالت چندستونه، ترکیب مقادیر ستونها برای تشخیص تکراری بودن بررسی میشود. همچنین آموختیم که استفاده از DISTINCT هیچ تغییری در اطلاعات اصلی جدول ایجاد نمیکند و فقط نتیجه پرسوجو را تحت تأثیر قرار میدهد.
در درس بعدی با دستور WHERE آشنا میشویم و یاد میگیریم چگونه اطلاعات را بر اساس یک شرط مشخص فیلتر کنیم.
