SQL UNION運(yùn)算符及其應(yīng)用場(chǎng)景深入探究
SQL UNION運(yùn)算符
SQL UNION運(yùn)算符用于組合兩個(gè)或多個(gè)SELECT語(yǔ)句的結(jié)果集。
- 每個(gè)
UNION中的SELECT語(yǔ)句必須具有相同數(shù)量的列。 - 列的數(shù)據(jù)類(lèi)型也必須相似。
- 每個(gè)
SELECT語(yǔ)句中的列也必須按照相同的順序排列。
UNION語(yǔ)法
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
UNION ALL語(yǔ)法UNION運(yùn)算符默認(rèn)僅選擇不同的值。為了允許重復(fù)的值,請(qǐng)使用UNION ALL:
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
注意:結(jié)果集中的列名通常等于第一個(gè)*SELECT*語(yǔ)句中的列名。
演示數(shù)據(jù)庫(kù)
在本教程中,我們將使用著名的Northwind示例數(shù)據(jù)庫(kù)。
Customers表部分選擇:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
Suppliers表部分選擇:
| SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
| 2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
| 3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
SQL UNION示例
以下SQL語(yǔ)句從“Customers”和“Suppliers”表中返回城市(僅不同的值):
SELECT City FROM Customers UNION SELECT City FROM Suppliers ORDER BY City;
注意:如果一些客戶(hù)或供應(yīng)商具有相同的城市,每個(gè)城市將只列出一次,因?yàn)?UNION僅選擇不同的值。使用UNION ALL*也選擇重復(fù)的值!
SQL UNION ALL示例
以下SQL語(yǔ)句從“Customers”和“Suppliers”表中返回城市(還包括重復(fù)的值):
SELECT City FROM Customers UNION ALL SELECT City FROM Suppliers ORDER BY City;
帶有WHERE的SQL UNION
以下SQL語(yǔ)句從“Customers”和“Suppliers”表中返回德國(guó)的城市(僅不同的值):
SELECT City, Country FROM Customers WHERE Country='Germany' UNION SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City;
帶有WHERE的SQL UNION ALL
以下SQL語(yǔ)句從“Customers”和“Suppliers”表中返回德國(guó)的城市(還包括重復(fù)的值):
SELECT City, Country FROM Customers WHERE Country='Germany' UNION ALL SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City;
另一個(gè)UNION示例
以下SQL語(yǔ)句列出了所有客戶(hù)和供應(yīng)商:
SELECT 'Customer' AS Type, ContactName, City, Country FROM Customers UNION SELECT 'Supplier', ContactName, City, Country FROM Suppliers;
請(qǐng)注意上面的AS Type - 它是一個(gè)別名。SQL別名用于給表或列一個(gè)臨時(shí)的名稱(chēng)。別名僅在查詢(xún)的持續(xù)時(shí)間內(nèi)存在。因此,這里我們創(chuàng)建了一個(gè)名為“Type”的臨時(shí)列,其中列出了聯(lián)系人是“Customer”還是“Supplier”。
SQL GROUP BY語(yǔ)句
GROUP BY語(yǔ)句將具有相同值的行分組為摘要行,通常與聚合函數(shù)一起使用,以根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。
GROUP BY語(yǔ)法
SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);
演示數(shù)據(jù)庫(kù)
以下是Northwind示例數(shù)據(jù)庫(kù)中“Customers”表的一部分選擇:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
SQL GROUP BY示例
以下SQL語(yǔ)句列出了每個(gè)國(guó)家的客戶(hù)數(shù)量:
SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country;
以下SQL語(yǔ)句列出了每個(gè)國(guó)家的客戶(hù)數(shù)量,按高到低排序:
SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country ORDER BY COUNT(CustomerID) DESC;
演示數(shù)據(jù)庫(kù)
以下是Northwind示例數(shù)據(jù)庫(kù)中“Orders”表的一部分選擇:
| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
|---|---|---|---|---|
| 10248 | 90 | 5 | 1996-07-04 | 3 |
| 10249 | 81 | 6 | 1996-07-05 | 1 |
| 10250 | 34 | 4 | 1996-07-08 | 2 |
以及“Shippers”表的一部分選擇:
| ShipperID | ShipperName |
|---|---|
| 1 | Speedy Express |
| 2 | United Package |
| 3 | Federal Shipping |
帶有JOIN的GROUP BY示例
以下SQL語(yǔ)句列出了每個(gè)承運(yùn)人發(fā)送的訂單數(shù)量:
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID GROUP BY ShipperName;
以上就是SQL UNION運(yùn)算符及其應(yīng)用場(chǎng)景深入探究的詳細(xì)內(nèi)容,更多關(guān)于SQL UNION運(yùn)算符的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- sql語(yǔ)句中union的用法與踩坑記錄
- MySQL中union和unionall區(qū)別
- Mysql中使用Union—多表合并之行合并
- MySQL中UNION語(yǔ)句用法詳解與示例
- MySql UNION 一行轉(zhuǎn)多列的實(shí)現(xiàn)示例
- MySQL數(shù)據(jù)庫(kù)CRUD、常見(jiàn)函數(shù)及union查詢(xún)?cè)斀?/a>
- MySQL之union聯(lián)合查詢(xún)的實(shí)現(xiàn)
- MySQL中關(guān)鍵字UNION和UNION ALL的區(qū)別
- sql語(yǔ)句中union的用法小結(jié)
相關(guān)文章
MySQL 發(fā)生同步延遲時(shí)Seconds_Behind_Master還為0的原因
騰訊云數(shù)據(jù)庫(kù) MySQL 的只讀實(shí)例出現(xiàn)了同步延遲,但是監(jiān)控的延遲時(shí)間顯示為 0,而且延遲的 binlog 距離非 0,且數(shù)值越來(lái)越大。臨時(shí)解決之后,仔細(xì)想了一想,Seconds_Behind_Master 雖然計(jì)算方式有點(diǎn)坑,但是出現(xiàn)這么“巨大”的誤差還是挺奇怪的,本文就來(lái)分析下這個(gè)問(wèn)題2021-06-06
MySQL插入數(shù)據(jù)與查詢(xún)數(shù)據(jù)
這篇文章主要介紹了 MySQL插入數(shù)據(jù)與查詢(xún)數(shù)據(jù),缺省插入、缺省插入、缺省插入等各種數(shù)據(jù)插入分享,需要的小伙伴可以參考一下,希望對(duì)你有所幫助2022-03-03
在MySQL中使用JOIN語(yǔ)句進(jìn)行連接操作的詳細(xì)教程
這篇文章主要介紹了在MySQL中使用JOIN語(yǔ)句進(jìn)行連接操作的詳細(xì)教程,是MySQL入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
深入理解MySQL主從復(fù)制線程狀態(tài)轉(zhuǎn)變
這篇文章主要給大家介紹了關(guān)于MySQL主從復(fù)制線程狀態(tài)轉(zhuǎn)變的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
MySQL數(shù)據(jù)庫(kù)用戶(hù)權(quán)限管理
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)用戶(hù)權(quán)限管理,文章主要內(nèi)容就是在不同的項(xiàng)目中,給不同的角色(開(kāi)發(fā)者)不同的操作權(quán)限,保證數(shù)據(jù)庫(kù)數(shù)據(jù)的安全,需要的朋友可以參考一下2022-06-06
MySQL中datetime和timestamp的區(qū)別及使用詳解
這篇文章主要介紹了MySQL中datetime和timestamp的區(qū)別及使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

