MS SQL Server T-SQL UNION Kullanımı


CREATE TABLE [USERS](
        [USERID] [int] IDENTITY(1,1) NOT NULL,
        [USERNAME] [varchar](100) NULL,
        [PASSWORD] [varchar] (50) NULL,
        [MAIL] [varchar] (50) NULL,
PRIMARY KEY (USERID)
)

GO

CREATE TABLE [USERCLONE](
        [USERID] [int] IDENTITY(1,1) NOT NULL,
        [USERNAME] [varchar](100) NULL,
        [PASSWORD] [varchar] (50) NULL,
        [MAIL] [varchar] (50) NULL,
        [ADDDATE] [datetime] DEFAULT(GETDATE()),
PRIMARY KEY (USERID)
)
GO


iki adet tablomuz olduğunu düşünelim ve bu tablolar bir trigger ile birine veri eklendiginde digerine de eklendigini farzedelim 

Senaryo 1 : Bu iki tablodaki tüm verileri çekerek aynı kayıtların görüntülenmesini engellemek istersek ;

SELECT USERNAME FROM USERS
UNION 
SELECT USERNAME FROM USERCLONE

Bu sorguyla çekilen verilerde 1. tabloda olup ikinci tabloda olmayanlar veya 1. ve 2. tabloda olan kayıtları tekrarsız olarak Tek ResultSet ile verecektir. . Tabi Hangi alanları görmek istiyorsanız onları SELECt edebilirsiniz.

Senaryo 2: Tüm alanları tekrarlı da olsa birleştirip tek ResultSet ile vermesini istersek;

SELECT USERNAME ,PASSWORD  FROM USERS
UNION ALL
SELECT USERNAME,PASSWORD  FROM USERCLONE

bu durumda da tüm kayıtlar birleştirilecek 2 tablonun da kayıtları gösterilecektir.

Yorumlar