sql語句中union的用法與踩坑記錄
sql語句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é)果共全部顯示出來,不管是不是重復(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踩過的坑
UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集。
請(qǐng)注意,UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每條 SELECT 語句中的列的順序必須相同。
SQL UNION 語法
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 語法
SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
另外,UNION 結(jié)果集中的列名總是等于 UNION 中第一個(gè) SELECT 語句中的列名。
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í),一定要保證每條語句的字段順序一致,特殊需求除外.
2.union all(結(jié)果集不去重)比union(結(jié)果集去重)的執(zhí)行效率高很多 注意區(qū)別
3.如果要排序在最后一個(gè)select語句上加order by即可
總結(jié)
到此這篇關(guān)于sql語句中union用法與踩坑的文章就介紹到這了,更多相關(guān)sql語句union的用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL?Server設(shè)置多個(gè)端口號(hào)的操作步驟
SQL?Server使用的默認(rèn)端口號(hào)是TCP端口1433,這是為了連接到?Microsoft?SQL?Server?實(shí)例的標(biāo)準(zhǔn)網(wǎng)絡(luò)端口,如果你正在設(shè)置?SQL?Server?或者嘗試從其他應(yīng)用程序連接到它,所以本文給大家介紹了SQL?Server如何設(shè)置多個(gè)端口號(hào),需要的朋友可以參考下2024-07-07sql?server中的觸發(fā)器用法實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于sql?server中觸發(fā)器用法的相關(guān)資料,SQL Server觸發(fā)器是一種特殊類型的存儲(chǔ)過程,它們在數(shù)據(jù)庫中的表上自動(dòng)執(zhí)行,需要的朋友可以參考下2024-03-03SqlServer系統(tǒng)數(shù)據(jù)庫的作用深入了解
至于SqlServer系統(tǒng)數(shù)據(jù)庫的作用可以從以下幾個(gè)部分介紹下:Master/Model/Tempdb/Distribution/Msdb;感興趣的你可以參考下哦,不妨可以充充電了2013-02-02SQL Server ltrim(rtrim()) 去不掉空格的原因分析
這篇文章主要介紹了SQL Server ltrim(rtrim()) 去不掉空格的原因分析,原因主要是因?yàn)橹虚g存在回車符或者換行符,所以要先將此符號(hào)替換掉,具體示例代碼大家參考下本文2017-08-08SQL多表聯(lián)合查詢時(shí)如何采用字段模糊匹配
這篇文章主要介紹了SQL多表聯(lián)合查詢時(shí)如何采用字段模糊匹配,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Sql?Server登錄錯(cuò)誤:18456的解決方案
Sql?Server?安裝后使用Sql?Server身份驗(yàn)證登錄,出現(xiàn)錯(cuò)誤:18456,本文小編給大家介紹了Sql?Server登錄錯(cuò)誤:18456的解決方案,如果遇到相同問題的同學(xué)可以參考閱讀下2023-10-10SQL?server數(shù)據(jù)庫declare和set用法技巧小結(jié)
這篇文章主要給大家介紹了關(guān)于SQL?server數(shù)據(jù)庫declare和set用法技巧的相關(guān)資料,在SQL Server中,DECLARE用于聲明變量和存儲(chǔ)過程中的參數(shù),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08