دستور SELECT DISTINCT در SQL Server
دستور SELECT DISTINCT در SQL Server برای نمایش مقادیر یکتا و حذف دادههای تکراری از نتایج Query استفاده میشود.
20 مرداد 1405
لینک کوتاه
دستور SELECT DISTINCT در SQL Server
دستور SELECT DISTINCT در SQL Server برای حذف رکوردهای تکراری از نتیجه یک Query استفاده میشود.زمانی که یک ستون یا چند ستون دارای مقادیر تکراری هستند و فقط میخواهیم مقادیر یکتا را مشاهده کنیم، DISTINCT گزینهای ساده و کاربردی است.
ساختار کلی SELECT DISTINCT در SQL Server
SELECT DISTINCT column_name
FROM table_name;
برای مثال، فرض کنید جدولی با نام Students داریم:
| Id | Name | City |
| 1 | علی | تهران |
| 2 | رضا | مشهد |
| 3 | مریم | تهران |
| 4 | سارا | شیراز |
| 5 | حسن | تهران |
اگر بخواهیم فهرست شهرهای موجود را بدون تکرار دریافت کنیم:
SELECT DISTINCT City
FROM Students;
نتیجه:
| City |
| تهران |
| مشهد |
| شیراز |
همانطور که میبینید، با وجود اینکه «تهران» سه بار در جدول وجود دارد، در نتیجه Query فقط یک بار نمایش داده میشود
.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
مزایای دستور SELECT DISTINCT در SQL Server
-
حذف مقادیر تکراری از نتایج Query
-
نمایش دادههای یکتا و مرتبتر
-
سادهتر شدن گزارشها و خروجیهای SQL
-
مناسب برای استخراج فهرست دستهبندیها و شهرها
-
امکان استفاده روی یک یا چند ستون
-
قابل ترکیب با WHERE و ORDER BY
-
کاهش دادههای تکراری در خروجی Query
-
ساده و خوانا بودن ساختار دستور

SELECT DISTINCT روی چند ستون
DISTINCT میتواند همزمان روی چند ستون نیز استفاده شود:SELECT DISTINCT City, Name
FROM Students;
در این حالت SQL Server ترکیب مقادیر ستونها را بررسی میکند، نه هر ستون را بهصورت جداگانه.
مثلاً:
| City | Name |
| تهران | علی |
| تهران | مریم |
| تهران | حسن |
| مشهد | رضا |
اگر دو رکورد دقیقاً ترکیب یکسانی از City و Name داشته باشند، یکی از آنها در خروجی حذف میشود.
مثال کاربردی در جدول محصولات
فرض کنید جدول Products به شکل زیر باشد:| Id | ProductName | Category |
| 1 | لپتاپ | دیجیتال |
| 2 | موبایل | دیجیتال |
| 3 | میز | لوازم اداری |
| 4 | صندلی | لوازم اداری |
| 5 | مانیتور | دیجیتال |
برای دریافت دستهبندیهای موجود:
SELECT DISTINCT Category
FROM Products;
خروجی:
دیجیتال
لوازم اداری
این کاربرد در سیستمهای فروشگاهی بسیار رایج است؛ برای مثال زمانی که میخواهیم دستهبندیهای موجود را برای یک فیلتر یا منوی انتخابی نمایش دهیم.
تفاوت SELECT و SELECT DISTINCT در SQL Server
-
بدون DISTINCT
SELECT Category
FROM Products;
ممکن است نتیجه به شکل زیر باشد:
دیجیتال
دیجیتال
لوازم اداری
لوازم اداری
دیجیتال
-
با DISTINCT
SELECT DISTINCT Category
FROM Products;
نتیجه فقط شامل مقادیر یکتا خواهد بود:
دیجیتال
لوازم اداری
بنابراین تفاوت اصلی این دو دستور در نحوه نمایش دادههای تکراری است.
استفاده از DISTINCT همراه با WHERE
میتوان DISTINCT را همراه با WHERE استفاده کرد.برای مثال، اگر بخواهیم شهرهای دانشآموزانی را که نمره آنها بیشتر از ۱۵ است مشاهده کنیم:
SELECT DISTINCT City
FROM Students
WHERE Score > 15;
در این Query ابتدا رکوردهای دارای نمره بیشتر از ۱۵ بررسی میشوند و سپس شهرهای تکراری از نتیجه حذف میشوند.
استفاده از DISTINCT همراه با ORDER BY
برای مرتبسازی نتیجه نیز میتوان از ORDER BY استفاده کرد:SELECT DISTINCT City
FROM Students
ORDER BY City;
در این حالت شهرهای یکتا به ترتیب مرتبشده نمایش داده میشوند.
استفاده از DISTINCT با چند ستون
یک نکته مهم این است که:SELECT DISTINCT City, Category
FROM Products;
به معنی «حذف تکراریهای City و Category بهصورت جداگانه» نیست.
SQL Server ترکیب این دو مقدار را بررسی میکند.
برای مثال:
تهران | دیجیتال
تهران | اداری
تهران | دیجیتال
نتیجه:
تهران | دیجیتال
تهران | اداری
زیرا فقط ترکیب تهران + دیجیتال تکراری بوده است.
تفاوت DISTINCT با GROUP BY
در بعضی شرایط میتوان از GROUP BY نیز برای دریافت مقادیر یکتا استفاده کرد.مثلاً:
SELECT DISTINCT City
FROM Students;
از نظر نتیجه مشابه این Query است:
SELECT City
FROM Students
GROUP BY City;
اما کاربرد این دو دقیقاً یکسان نیست. DISTINCT بیشتر برای حذف نتایج تکراری استفاده میشود، در حالی که GROUP BY معمولاً زمانی کاربرد دارد که بخواهیم دادهها را گروهبندی کرده و روی آنها عملیات تجمیعی انجام دهیم.
مثلاً:
SELECT City, COUNT(*) AS StudentCount
FROM Students
GROUP BY City;
در اینجا میتوانیم تعداد دانشآموزان هر شهر را محاسبه کنیم.
DISTINCT و مقدار NULL
DISTINCT مقدار NULL را نیز در نظر میگیرد.برای مثال اگر ستون City دارای مقادیر زیر باشد:
تهران
تهران
مشهد
NULL
NULL
Query زیر:
SELECT DISTINCT City
FROM Students;
مقادیر یکتا را برمیگرداند و NULL نیز یک مقدار یکتا در نتیجه محسوب میشود:
تهران
مشهد
NULL
آیا DISTINCT همیشه بهترین انتخاب است؟
خیر. استفاده از DISTINCT باعث میشود SQL Server برای پیدا کردن و حذف نتایج تکراری، عملیات پردازشی انجام دهد. در جدولهای کوچک معمولاً مسئله خاصی ایجاد نمیکند، اما در Queryهای پیچیده و حجم دادههای زیاد، استفاده غیرضروری از آن میتواند روی عملکرد تأثیر بگذارد.
بنابراین بهتر است قبل از اضافه کردن DISTINCT بررسی کنیم که چرا Query ما رکوردهای تکراری تولید میکند.
برای مثال، گاهی وجود تکرار به دلیل JOIN نادرست است.
در چنین شرایطی اضافه کردن DISTINCT ممکن است فقط مشکل Query را پنهان کند، نه اینکه علت اصلی را برطرف کند.
جمعبندی
دستور SELECT DISTINCT یکی از دستورات کاربردی SQL Server برای دریافت مقادیر یا ترکیبهای یکتا از نتیجه یک Query است.این دستور در نمایش دستهبندیها، شهرها، وضعیتها، انواع محصولات و سایر دادههایی که ممکن است تکراری باشند کاربرد زیادی دارد.
بهصورت خلاصه:
SELECT DISTINCT column_name
FROM table_name;
اگر چند ستون مشخص کنیم، SQL Server ترکیب یکتای آن ستونها را بررسی میکند:
SELECT DISTINCT column1, column2
FROM table_name;
همچنین میتوان DISTINCT را در کنار WHERE و ORDER BY استفاده کرد.
با این حال، در Queryهای بزرگ بهتر است استفاده از آن با توجه به ساختار Query و عملکرد SQL Server انجام شود.



کاربران ما
شما هم نظرتون با ما دریاره “دستور SELECT DISTINCT در SQL Server” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید