SQL

SQL EXCEPT

EXCEPT در SQL Server برای استثناء گرفتن مجموعه ای از ردیف ها از مجموعه دیگر استفاده می شود. در واقع، این عمل تفاضل مجموعه ها را در تئوری مجموعه ها انجام می دهد.

فرض کنید دو جدول به نام Customers و HighSpenders در پایگاه داده خود دارید. جدول Customers شامل ستون‌های CustomerID، CustomerName و TotalSpent است. جدول HighSpenders شامل CustomerID برای مشتریانی است که در یک دوره خاص بیش از مقدار مشخصی خرج کرده‌اند.

هدف شما نمایش لیستی از تمام مشتریان است، به جز مشتریانی که در جدول HighSpenders قرار دارند (یعنی مشتریانی که جزو خرج کنندگان بالا نیستند).

در اینجا یک پرس و جوی SQL با استفاده از EXCEPT برای دستیابی به این هدف ارائه می‌شود:

SQL

SELECT CustomerID, CustomerName, TotalSpent
FROM Customers
EXCEPT
SELECT CustomerID
FROM HighSpenders;

توضیح:

  • این پرس و جو از دو بخش تشکیل شده است که با EXCEPT از هم جدا شده‌اند.
  • بخش اول:
    • تمام ستون‌های مورد نیاز را از جدول Customers انتخاب می‌کند.
  • بخش دوم:
    • فقط ستون CustomerID را از جدول HighSpenders انتخاب می‌کند.

نکات:

  • این پرس و جو به طور واضح و خوانا با استفاده از نام‌های کامل توابع و کلمات کلیدی نوشته شده است.
  • ستون‌های انتخاب شده در هر دو بخش باید با هم مطابقت داشته باشند (در این مثال، هر دو بخش فقط CustomerID را انتخاب می‌کنند).
  • پرس و جو به طور کامل با توضیحات و تفاسیر ارائه شده است.

نتیجه:

این پرس و جو خروجی زیر را برمی‌گرداند که شامل اطلاعات مشتریانی است که در جدول HighSpenders وجود ندارند (یعنی مشتریانی با هزینه کمتر از حد تعیین شده):

CustomerID CustomerName TotalSpent
۳ Alice Smith ۲۰۰.۰۰
۵ David Miller ۱۵۰.۰۰
۷ Emily Jones ۱۰۰.۰۰

همانطور که مشاهده می‌کنید، EXCEPT به شما امکان می‌دهد ردیف‌های موجود در یک مجموعه را از ردیف‌های موجود در مجموعه دیگر حذف کند و نتیجه را نمایش دهد. این برای یافتن تفاوت بین دو مجموعه داده مفید است.

مثال‌های دیگر:

  • می‌توانید از INTERSECT به جای EXCEPT استفاده کنید تا فقط ردیف‌های موجود در هر دو مجموعه را نمایش دهد.
  • می‌توانید از WHERE clause در هر دو بخش EXCEPT برای فیلتر کردن بیشتر داده‌ها استفاده کنید.
  • می‌توانید از ORDER BY clause برای مرتب‌سازی نتایج استفاده کنید.
  • می‌توانید از LIMIT clause برای محدود کردن تعداد ردیف‌های برگشتی استفاده کنید.

منابع:

 

۰/۵ ( ۰ امتیاز )
نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا