خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استفاده از تابع UNION ALL در SQL Server

استفاده از تابع UNION ALL در SQL Server
در پست قبلی در مورد تابع UNION در SQL Server صحبت کردیم و تابع دیگری که عملکردی مشابه با UNION را دارد، UNION ALL می باشد. در ادامه با ذکر مثال هایی به طور کامل با UNION ALL هم آشنایی پیدا خواهید کرد و در برنامه ها در صورت نیاز می توانید از آن استفاده کنید.

سیستم یکپارچۀ سازمانی راهکار



SYNTAX استفاده از UNION ALL به صورت زیر می باشد:

select column1, column2 ,... from table1
UNION ALL
select column1, column2 ,... from table2

حالا با مثال های ساده ای به بررسی UNION ALL می پردازیم. در ابتدا دو جدول با نام های tblA و tblB ایجاد خواهیم کرد و سپس رکوردهایی را در آن اضافه می کنیم.

CREATE TABLE tblA (SNO INT NOT NULL, NAME VARCHAR(30), CODE VARCHAR(15))

INSERT INTO tblA (SNO, NAME, CODE)
VALUES(1, 'JOY','JO_FTX'),(2, 'RAHEJA', 'RAH_FTX'),(3, 'JOHN D', 'JHN_FTX')

CREATE TABLE tblB (SNO INT NOT NULL, NAME VARCHAR(30), CODE VARCHAR(15))

INSERT INTO tblB (SNO, NAME, CODE)
VALUES (1,'JOY','JO_FTX'),(2,'MARK JACK', 'MA_FTX')

استفاده از تابع UNION ALL در SQL Server
حال به رکوردهایی که در این جدوال اضافه کرده ایم، با دستور Select نگاهی بدان ها خواهیم داشت.

SELECT * FROM tblA

SELECT * FROM tblB

استفاده از تابع UNION ALL در SQL Server
تابع UNION ALL مقادیر تکراری را نیز از tblA و tblB برمی گرداند ، بر خلاف UNION که رکوردهای تکراری را حذف می کند.

select Name, code from tblA
UNION ALL
select Name,Code from tblB

استفاده از تابع UNION ALL در SQL Server
همانطور که در Result set فوق مشاهده می کنید، رکورد تکراری شماره های 1 و 4 هستند و UNION ALL رکوردهای کپی را حذف نمی کند ، به همین دلیل ما برای نام و کد ردیف های تکراری داریم.

UNION ALL on tables when column have different datatype


select  sno , code from tblA
UNION ALL
select Name ,Code from tblB

همانطور که در select اول مشاهده می کنید، ستون اول sno است که از نوع int می باشد و در Select دوم، ستون اول name می باشد که نوع آن varchar می باشد. بنابراین در چنین حالتی تابع UNION ALL خطا نمایش خواهد داد.
برای UNION ALL ، ستون ها باید دیتاتایپ های مشابه داشته باشند.

استفاده از تابع UNION ALL در SQL Server

UNION ALL on tables but both table have different number of columns in select statement

همانطور که مشاهده می کنید ، هر دو جدول دارای تعداد ستون های متفاوت هستند ، جدول اول دارای 3 ستون در Select است در حالی که جدول دوم فقط 2 ستون در Select دارد. پس مواجه شدن با خطا بدیهی است.
select sno ,Name ,code from tblA
UNION ALL
select Name ,Code from tblB

استفاده از تابع UNION ALL در SQL Server

UNION ALL with order by clause

خروجی Select همراه با union all را می توانید با order by مرتب سازی کنید.
در مثال زیر مرتب سازی بصورت نزولی یا desc می باشد.

select Name, code from tblA
UNION ALL
select Name, Code from tblB order by name desc

استفاده از تابع UNION ALL در SQL Server
دستور Order by همیشه باید در خرین دستور Select قرار داشته باشد و در هر جایی غیر از آن باشد، خطا تولید خواهد شد:

select Name ,code from tblA order by name desc
UNION ALL
select Name ,Code from tblB

استفاده از تابع UNION ALL در SQL Server

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز