sqlserver Union和SQL Union All使用方法
SQL UNION 操作符
UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結(jié)果集。
請(qǐng)注意,UNION 內(nèi)部的 SELECT 語(yǔ)句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每條 SELECT 語(yǔ)句中的列的順序必須相同。
SQL UNION 語(yǔ)法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注釋:默認(rèn)地,UNION 操作符選取不同的值,即UNION是去了重的。如果允許重復(fù)的值,請(qǐng)使用 UNION ALL。
SQL UNION ALL 語(yǔ)法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 結(jié)果集中的列名總是等于 UNION 中第一個(gè) SELECT 語(yǔ)句中的列名。
UNION 指令的目的是將兩個(gè) SQL 語(yǔ)句的結(jié)果合并起來(lái)。從這個(gè)角度來(lái)看, UNION 跟 JOIN 有些許類似,因?yàn)檫@兩個(gè)指令都可以由多個(gè)表格中擷取資料。union只是將兩個(gè)結(jié)果聯(lián)結(jié)起來(lái)一起顯示,并不是聯(lián)結(jié)兩個(gè)表………… UNION 的語(yǔ)法如下:
[SQL 語(yǔ)句 1]
UNION
[SQL 語(yǔ)句 2] 假設(shè)我們有以下的兩個(gè)表格,
Store_Information 表格
| |||||||||||||||
Internet Sales 表格
|
而我們要找出來(lái)所有有營(yíng)業(yè)額 (sales) 的日子。要達(dá)到這個(gè)目的,我們用以下的 SQL 語(yǔ)句: SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales 結(jié)果:
Date |
Jan-05-1999 |
Jan-07-1999 |
Jan-08-1999 |
Jan-10-1999 |
Jan-11-1999 |
Jan-12-1999 |
有一點(diǎn)值得注意的是,如果我們?cè)谌魏我粋€(gè) SQL 語(yǔ)句 (或是兩句都一起) 用 "SELECT DISTINCT Date" 的話,那我們會(huì)得到完全一樣的結(jié)果。
SQL Union All
UNION ALL 這個(gè)指令的目的也是要將兩個(gè) SQL 語(yǔ)句的結(jié)果合并在一起。 UNION ALL 和 UNION 不同之處在于 UNION ALL 會(huì)將每一筆符合條件的資料都列出來(lái),無(wú)論資料值有無(wú)重復(fù)。 UNION ALL 的語(yǔ)法如下: [SQL 語(yǔ)句 1]
UNION ALL
[SQL 語(yǔ)句 2] 我們用和上一頁(yè)同樣的例子來(lái)顯示出 UNION ALL 和 UNION 的不同。同樣假設(shè)我們有以下兩個(gè)表格,
Store_Information 表格
| |||||||||||||||
Internet Sales 表格
|
而我們要找出有店面營(yíng)業(yè)額以及網(wǎng)絡(luò)營(yíng)業(yè)額的日子。要達(dá)到這個(gè)目的,我們用以下的 SQL 語(yǔ)句: SELECT Date FROM Store_Information
UNION ALL
SELECT Date FROM Internet_Sales 結(jié)果:
Date |
Jan-05-1999 |
Jan-07-1999 |
Jan-08-1999 |
Jan-08-1999 |
Jan-07-1999 |
Jan-10-1999 |
Jan-11-1999 |
Jan-12-1999 |
eg:
SELECT id,Name,DocPinYin FROM doctor
UNION
SELECT 0 AS id,'無(wú)醫(yī)生名' AS Name,'' AS DocPinYin
結(jié)果集是
SELECT id,Name,DocPinYin FROM doctor
結(jié)果集是
故:union將兩個(gè)結(jié)果集合在一起
相關(guān)文章
SQL Server遍歷表中記錄的2種方法(使用表變量和游標(biāo))
遍歷表一般都要用到游標(biāo)在SQL Server中可以很容易的用游標(biāo)實(shí)現(xiàn)循環(huán)實(shí)現(xiàn)遍歷表中記錄,本文將介紹使用表變量和游標(biāo)實(shí)現(xiàn)數(shù)據(jù)庫(kù)中表的遍歷,感興趣的朋友可以了解下本文,或許可以幫助到你2013-02-02SQL?Server下7種“數(shù)據(jù)分頁(yè)”方案全網(wǎng)最新最全
這篇文章主要介紹了SQL?Server下7種“數(shù)據(jù)分頁(yè)”方案,全網(wǎng)最全,本文下面重點(diǎn)闡述上述【第二種】方案在SQL?Server上的使用(其它種類數(shù)據(jù)庫(kù)由于Sql語(yǔ)句略有差異,所以需要調(diào)整,但方案也類似),需要的朋友可以參考下2023-01-01sql server 2000中禁止創(chuàng)建表(權(quán)限設(shè)置方法)
最近發(fā)現(xiàn)數(shù)據(jù)庫(kù)中發(fā)現(xiàn)了三個(gè)臨時(shí)表,為了安全這里為大家分享下sql server 2000中禁止創(chuàng)建表的方法,網(wǎng)上都么有的,腳本之家小編原創(chuàng)2015-07-07解決Navicat連接本地sqlserver數(shù)據(jù)庫(kù)成功后沒(méi)有庫(kù)表數(shù)據(jù)的問(wèn)題
本文主要給大家介紹了如何解決Navicat連接本地sqlserver數(shù)據(jù)庫(kù)成功后沒(méi)有庫(kù)表數(shù)據(jù)的問(wèn)題,文中有詳細(xì)的原因分析和解決方法,具有一定的參考價(jià)值,需要的朋友可以參考下2023-10-10MSSQL中刪除用戶時(shí)數(shù)據(jù)庫(kù)主體在該數(shù)據(jù)庫(kù)存中擁有架構(gòu) 無(wú)法刪除的解決方法
在ms sql2005 下面刪除一個(gè)數(shù)據(jù)庫(kù)的用戶的時(shí)候提示 數(shù)據(jù)庫(kù)主體在該數(shù)據(jù)庫(kù)中擁有架構(gòu),無(wú)法刪除的錯(cuò)誤解決方案2013-08-08sql server 2000 數(shù)據(jù)庫(kù)自動(dòng)備份設(shè)置方法
這篇文章主要介紹了sql server 2000 數(shù)據(jù)庫(kù)自動(dòng)備份設(shè)置方法,需要的朋友可以參考下2015-07-07SQL Server代理服務(wù)無(wú)法啟動(dòng)的解決方法
錯(cuò)誤MSSQLSERVERSQLServerAgent could not be started (reason: SQLServerAgent 必須能夠以 SysAdmin 身份連接到 SQLServer,但“(未知)”不是 SysAdmin 角色的成員)2013-02-02sqlserver中關(guān)于WINDOWS性能計(jì)數(shù)器的介紹
sqlserver中關(guān)于WINDOWS 性能計(jì)數(shù)器的介紹,需要的朋友可以看下2013-01-01