با استفاده از عبارات INTERSECT و EXCEPT در SQL، دو پرس‌وجو بنویسید: یکی برای استخراج لیست کارمندان جدول Employees که در جدول Contractors وجود ندارند و دیگری برای استخراج افرادی که هم در Employees و هم در Contractors ثبت شده‌اند.

3.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:12

0.0

برای حل این مسئله از SELECT ... EXCEPT SELECT ... برای یافتن رکوردهایی که فقط در Employees وجود دارند و از SELECT ... INTERSECT SELECT ... برای گرفتن اشتراک دو مجموعه استفاده کنید. توجه کنید ستون‌های انتخاب‌شده در هر دو طرف باید به تعداد و نوع یکسان باشند (مثلاً SELECT employee_id, name FROM Employees EXCEPT SELECT employee_id, name FROM Contractors). EXCEPT به طور پیش‌فرض مقادیر تکراری را حذف می‌کند (مثل DISTINCT)، برای مرتب‌سازی نهایی از ORDER BY استفاده کنید و در صورت نیاز به مقایسه صحیح مقادیر NULL یا انواع متفاوت، از CAST یا COALESCE استفاده کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:12
دسته بندی ها: SQL SQL for beginner
nima در 221 روز قبل ساعت 14:09

برای استفاده صحیح از INTERSECT و EXCEPT در SQL باید تعداد و نوع ستون‌های انتخاب‌شده در هر دو طرف برابر باشد (مثلاً SELECT employee_id, name FROM Employees EXCEPT SELECT employee_id, name FROM Contractors). EXCEPT مقادیر تکراری را حذف می‌کند و اگر مقادیر NULL یا انواع داده‌ای متفاوت وجود دارد، از CAST یا COALESCE استفاده کنید تا مقایسه صحیح انجام شود. توجه کنید که برخی موتورهای DB مانند MySQL از INTERSECT/EXCEPT پشتیبانی نمی‌کنند و در چنین مواردی می‌توانید با NOT EXISTS یا LEFT JOIN جایگزین کنید. برای خوانایی و نگهداری بهتر، استفاده از یک CTE یا زیرپرس‌وجو برای تعریف مجموعه‌های Employees و Contractors پیشنهاد می‌شود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری