حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

تفاوت Union و Union All در SQL Server چیست؟

زمانی که شما قصد دارید در SQL Server نتایج کوئری دو جدول را با همدیگر ادغام کنید از عبارت UNION استفاده می کنید، عبارت UNION کاری که می کند نتایج دو کوئری را گرفته و تحت یک خروجی به شما نمایش می دهد، موضوع مهم در UNION این است که ستون ها و نوع های ستون های خروجی دو کوئری می بایست با یکدیگر یکسان باشند:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
SELECT FirstName, LastName, Email FROM Customers
UNION
SELECT FirstName, LastName, Email FROM EMployees

اما UNION در این بین یک کار اضافی برای شما انجام می دهد، فرض کنید دو رکورد یکسان در دو جدول داریم، یعنی نام، نام خانوادگی و آدرس ایمیل دو نفر در لیست Customers و Employees با هم یکسان است، کاری که UNION می کند DISTINCT مقادیر را بر میگرداند، یعنی اطلاعات یک نفر از دو جدول برگردانده می شود، برای رفع این مشکل می توان از UNION ALL استفاده کرد، نحوه استفاده از UNION ALL دقیقاً مشابه UNION است، با این تفاوت که عملیات DISTINCT بر روی خروجی اعمال نمی شود، به همین دلیل Performance کوئری هایی که با UNION ALL نوشته می شود بیشتر است:

SELECT FirstName, LastName, Email FROM Customers
UNION ALL
SELECT FirstName, LastName, Email FROM EMployees

در کوئری بالا، در صورت وجود مقادیر تکراری، رکورد های تکراری در خروجی نمایش داده می شوند.


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات