狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

sqlserver UNION / UNION ALL 合并查詢

freeflydom
2023年5月29日 10:32 本文熱度 510

演示使用如下兩張表:

create TABLE #UserInfo (ID INT IDENTITY(1,1),UserAddress NVARCHAR(50),UserName NVARCHAR(50),EntryDate DATETIME)


insert INTO #UserInfo

        ( UserAddress, UserName, EntryDate )

VALUES  ( N'北京',N'Joey', '2015-04-12'),

        ( N'上海',N'John', '2013-04-23'),

        ( N'鄭州',N'Mery', '2012-03-17'),

        ( N'深圳',N'Anna', '2014-05-07'),

        ( N'合肥',N'Dave', '2011-01-12'),

        ( N'西安',N'Alex', '2012-03-03')



create TABLE #UserOrder (ID INT IDENTITY(1,1),UserName NVARCHAR(50),Amount INT ,Price float)


insert INTO #UserOrder

        ( UserName, Amount, Price )

VALUES  ( N'Joey', 30,200),

        ( N'John', 20,120),

        ( N'Mery', 70,231),

        ( N'Anna', 10,201),

        ( N'Dave', 5,12),

        ( N'Alex', 98,1200)

合并查詢的特點

1.合并表中的列的個數、數據類型必須相同或相兼容

--案例1

select UserAddress, UserName, EntryDate from #UserInfo

union


select Amount, UserName from #UserOrder

-----結果 列數個數不相等

消息 205,級別 16,狀態 1,第 33 行

使用 union、INTERSECT 或 EXCEPT 運算符合并的所有查詢必須在其目標列表中有相同數目的表達式。

--案例2

select UserAddress, UserName, EntryDate from #UserInfo

union


select Amount, UserName,Price from #UserOrder


------結果,數據類型不相同或不兼容

消息 245,級別 16,狀態 1,第 33 行

在將 nvarchar 值 '北京' 轉換成數據類型 int 時失敗。

保證數據類型相同我們需要進行轉換:

--案例  只是更加清晰理解union的使用方法,實際項目此類轉換無意義

select UserAddress, UserName, EntryDate from #UserInfo

union


select CONVERT(NVARCHAR, Amount), UserName,CONVERT(datetime, Price) from #UserOrder

2.union 默認去掉重復值。如果允許有重復值,請使用union ALL

--案例1

select UserAddress, UserName, EntryDate from #UserInfo

union


select CONVERT(NVARCHAR, Amount), UserName,CONVERT(datetime, Price) from #UserOrder


union


select UserAddress, UserName, EntryDate from #UserInfo


---結果只有12行,說明去掉重復值了

--案例2,改為union ALL 顯示所有

select UserAddress, UserName, EntryDate from #UserInfo

union ALL


select CONVERT(NVARCHAR, Amount), UserName,CONVERT(datetime, Price) from #UserOrder


union ALL


select UserAddress, UserName, EntryDate from #UserInfo


---結果顯示18行,保留了重復數據

3.執行順序與左向右(可 通過列的順序或空格改變結果集的排列順序)

--案例 例如將UserName 放在前面,可以比較下其他列的情況

select UserName,UserAddress,  EntryDate from #UserInfo

union 


select UserName, CONVERT(NVARCHAR, Amount), CONVERT(datetime, Price) from #UserOrder

--案例是用空格 排序,可以演示查看結果


select UserName,UserAddress,  EntryDate from #UserInfo

union 


select ' ', CONVERT(NVARCHAR, Amount), CONVERT(datetime, Price) from #UserOrder

4.可以與select INTO 一起使用,但是INTO 必須放在第一個select 語句中 

--案例 只能放在第一個select 中

select UserName,UserAddress,  EntryDate 


Into #insertTables  


from #UserInfo


union 


select UserName, CONVERT(NVARCHAR, Amount), CONVERT(datetime, Price) from #UserOrder


--結果顯示 插入12條數據

5.可以對合并的結果集進行排序,但排序的ORDER BY 必須放在最后一個select 后面,所使用的列名必須是第一個select中出現過的

--案例 排序的ORDER BY 必須放在最后一個select 后面

select UserName,UserAddress,  EntryDate 


from #UserInfo


union 


select UserName, CONVERT(NVARCHAR, Amount), CONVERT(datetime, Price) from #UserOrder


 ORDER BY UserName


--案例 如果需要隨機獲取指定數據,參照如下方法


 select* from (select TOP 2 UserName,UserAddress,  EntryDate  from #UserInfo Order By NewId()) A1

union ALL

select* from (select TOP 2 UserName, CONVERT(NVARCHAR, Amount) as Amount, CONVERT(datetime, Price)as Price from #UserOrder  Order By NewId()) A2

————————————————————

https://www.cnblogs.com/ankeyliu/p/11340381.html


該文章在 2023/5/29 10:39:17 編輯過
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved