با استفاده از عبارات 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 استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای استفاده صحیح از 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 پیشنهاد میشود.
گزارش