با استفاده از دو جدول Employees_US و Employees_EU (ستونهای id, name, department) دو پرسوجوی SQL بنویسید: یکی که کارکنانی را نشان دهد که فقط در Employees_US وجود دارند با استفاده از EXCEPT و دیگری که کارکنانی را نشان دهد که در هر دو جدول مشترکاند با استفاده از INTERSECT.
10.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 03:47 0.0
برای این مسئله از دو عبارت SELECT ترکیبی استفاده کنید: SELECT id, name, department FROM Employees_US EXCEPT SELECT id, name, department FROM Employees_EU برای ردیفهای منحصر بهفرد در جدول اول، و SELECT id, name, department FROM Employees_US INTERSECT SELECT id, name, department FROM Employees_EU برای ردیفهای مشترک. دقت کنید ستونها و نوع دادههای انتخابشده در هر دو SELECT دقیقاً همردیف باشند؛ در برخی پایگاهها (مانند Oracle) بهجای EXCEPT از MINUS استفاده میشود، و در صورت نیاز میتوانید با ORDER BY نتایج را مرتب کنید یا با DISTINCT تکراریها را حذف کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
فراموش نکنید که EXCEPT و INTERSECT روی مجموعهها عمل میکنند و بنابراین ردیفهای تکراری را حذف میکنند و ستونها و نوع دادهها در هر دو SELECT باید دقیقاً همردیف باشند؛ در Oracle بهجای EXCEPT از MINUS استفاده کنید. اگر ستونها نوع متفاوتی دارند میتوانید با CAST آنها را همتراز کنید و برای مرتبسازی نتایج از ORDER BY استفاده کنید. نکتهای که ممکن است بچسبد این است که مقایسه NULL در عملیات مجموعهای بسته به پیادهسازی دیتابیس ممکن است تفاوتهایی داشته باشد، پس در صورت لزوم مقداردهی پیشفرض یا فیلتر NULL را مدنظر قرار دهید. در پایگاههایی که EXCEPT/INTERSECT ندارند یا برای بررسی عملکرد، میتوانید معادل LEFT/INNER JOIN را برای تولید نتایج مشابه امتحان کنید.
گزارش