sql語(yǔ)句中union的用法與踩坑記錄
sql語(yǔ)句union的用法
union聯(lián)合的結(jié)果集不會(huì)有重復(fù)值,如果要有重復(fù)值,則使用union all
union會(huì)自動(dòng)壓縮多個(gè)結(jié)果集合中重復(fù)的結(jié)果,使結(jié)果不會(huì)有重復(fù)行,union all 會(huì)將所有的結(jié)果共全部顯示出來(lái),不管是不是重復(fù)。
union:會(huì)對(duì)兩個(gè)結(jié)果集進(jìn)行并集操作,不包括重復(fù)行,同時(shí)進(jìn)行默認(rèn)規(guī)則的排序。
union all:對(duì)兩個(gè)結(jié)果集進(jìn)行并集操作,包括重復(fù)行,不會(huì)對(duì)結(jié)果進(jìn)行排序。
1.sql Union用法 select 字段1 from 表名1 Union select 字段2 from 表名2; 2.sql Union All用法 select 字段1 from 表名1 Union all select 字段2 from 表名2;
employee_china表:

employee_use表:

union:
select E_ID,E_Name FROM employees_china union select E_ID,E_Name FROM employees_usa
去掉:

union all:
select E_ID,E_Name FROM employees_china union all select E_ID,E_Name FROM employees_usa
不能去掉:

當(dāng)存在不相同的字段時(shí):

必須進(jìn)行補(bǔ)充:
select E_ID,E_Name,E_Hello FROM employees_china union all select E_ID,E_Name,' ' as E_Hello FROM employees_usa

補(bǔ)充:SQL UNION踩過(guò)的坑
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 操作符選取不同的值。如果允許重復(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ǔ)句中的列名。
eg:
表中的數(shù)據(jù):

使用union 查詢

上圖中的例子 根據(jù)類型 分別統(tǒng)計(jì)了 color 和total兩個(gè)字段的和,稍不注意就會(huì)把 3和79當(dāng)成一個(gè)"類型"的數(shù)據(jù),尤其是在聚合操作大量數(shù)據(jù)的時(shí)候.
小結(jié):
1.使用union時(shí),一定要保證每條語(yǔ)句的字段順序一致,特殊需求除外.
2.union all(結(jié)果集不去重)比union(結(jié)果集去重)的執(zhí)行效率高很多 注意區(qū)別
3.如果要排序在最后一個(gè)select語(yǔ)句上加order by即可
總結(jié)
到此這篇關(guān)于sql語(yǔ)句中union用法與踩坑的文章就介紹到這了,更多相關(guān)sql語(yǔ)句union的用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL中union和unionall區(qū)別
- Mysql中使用Union—多表合并之行合并
- MySQL中UNION語(yǔ)句用法詳解與示例
- MySql UNION 一行轉(zhuǎn)多列的實(shí)現(xiàn)示例
- SQL UNION運(yùn)算符及其應(yīng)用場(chǎng)景深入探究
- MySQL數(shù)據(jù)庫(kù)CRUD、常見函數(shù)及union查詢?cè)斀?/a>
- MySQL之union聯(lián)合查詢的實(shí)現(xiàn)
- MySQL中關(guān)鍵字UNION和UNION ALL的區(qū)別
- sql語(yǔ)句中union的用法小結(jié)
相關(guān)文章
SQL Server Page結(jié)構(gòu)深入分析
這篇文章主要介紹了SQL Server Page結(jié)構(gòu)的詳細(xì)分析,從概念,原理等方便做了詳細(xì)說(shuō)明,一起來(lái)學(xué)習(xí)下。2017-12-12
和表值函數(shù)連接引發(fā)的性能問(wèn)題分析
最近調(diào)優(yōu)過(guò)程中遇到一個(gè)問(wèn)題,就是表值函數(shù)作為連接中的一部分時(shí),可能會(huì)引起麻煩,本文會(huì)簡(jiǎn)單闡述表值函數(shù)是什么,以及為什么使用表值函數(shù)進(jìn)行連接時(shí)會(huì)引發(fā)性能問(wèn)題2015-02-02
SQL語(yǔ)句中的DDL類型的數(shù)據(jù)庫(kù)定義語(yǔ)言操作
這篇文章主要介紹了SQL語(yǔ)句中的DDL類型的數(shù)據(jù)庫(kù)定義語(yǔ)言,主要是用來(lái)定義數(shù)據(jù)庫(kù)中的對(duì)象的,例如數(shù)據(jù)庫(kù)、表和字段的定義,簡(jiǎn)單的理解就是DDL語(yǔ)言是來(lái)操作數(shù)據(jù)庫(kù)、表和字段的,需要的朋友可以參考下2022-08-08
數(shù)據(jù)庫(kù)中identity字段不必是系統(tǒng)產(chǎn)生的唯一值 性能優(yōu)化方法(新招)
具有identity特性的字段,其值是系統(tǒng)產(chǎn)生的,自動(dòng)增加的,所以,一般把這個(gè)用在一個(gè)表的主鍵上。2011-09-09
mssql數(shù)據(jù)庫(kù)系統(tǒng)崩潰后的一般處理步驟與方法
mssql數(shù)據(jù)庫(kù)系統(tǒng)崩潰后的一般處理步驟與方法...2007-03-03

