SQL UNION運算符及其應用場景深入探究
SQL UNION運算符
SQL UNION運算符用于組合兩個或多個SELECT語句的結(jié)果集。
- 每個
UNION中的SELECT語句必須具有相同數(shù)量的列。 - 列的數(shù)據(jù)類型也必須相似。
- 每個
SELECT語句中的列也必須按照相同的順序排列。
UNION語法
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
UNION ALL語法UNION運算符默認僅選擇不同的值。為了允許重復的值,請使用UNION ALL:
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
注意:結(jié)果集中的列名通常等于第一個*SELECT*語句中的列名。
演示數(shù)據(jù)庫
在本教程中,我們將使用著名的Northwind示例數(shù)據(jù)庫。
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語句從“Customers”和“Suppliers”表中返回城市(僅不同的值):
SELECT City FROM Customers UNION SELECT City FROM Suppliers ORDER BY City;
注意:如果一些客戶或供應商具有相同的城市,每個城市將只列出一次,因為*UNION僅選擇不同的值。使用UNION ALL*也選擇重復的值!
SQL UNION ALL示例
以下SQL語句從“Customers”和“Suppliers”表中返回城市(還包括重復的值):
SELECT City FROM Customers UNION ALL SELECT City FROM Suppliers ORDER BY City;
帶有WHERE的SQL UNION
以下SQL語句從“Customers”和“Suppliers”表中返回德國的城市(僅不同的值):
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語句從“Customers”和“Suppliers”表中返回德國的城市(還包括重復的值):
SELECT City, Country FROM Customers WHERE Country='Germany' UNION ALL SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City;
另一個UNION示例
以下SQL語句列出了所有客戶和供應商:
SELECT 'Customer' AS Type, ContactName, City, Country FROM Customers UNION SELECT 'Supplier', ContactName, City, Country FROM Suppliers;
請注意上面的AS Type - 它是一個別名。SQL別名用于給表或列一個臨時的名稱。別名僅在查詢的持續(xù)時間內(nèi)存在。因此,這里我們創(chuàng)建了一個名為“Type”的臨時列,其中列出了聯(lián)系人是“Customer”還是“Supplier”。
SQL GROUP BY語句
GROUP BY語句將具有相同值的行分組為摘要行,通常與聚合函數(shù)一起使用,以根據(jù)一個或多個列對結(jié)果集進行分組。
GROUP BY語法
SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);
演示數(shù)據(jù)庫
以下是Northwind示例數(shù)據(jù)庫中“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語句列出了每個國家的客戶數(shù)量:
SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country;
以下SQL語句列出了每個國家的客戶數(shù)量,按高到低排序:
SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country ORDER BY COUNT(CustomerID) DESC;
演示數(shù)據(jù)庫
以下是Northwind示例數(shù)據(jù)庫中“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語句列出了每個承運人發(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運算符及其應用場景深入探究的詳細內(nèi)容,更多關(guān)于SQL UNION運算符的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL字符串使用STR_TO_DATE()函數(shù)舉例說明
在 MySQL 中,STR_TO_DATE()函數(shù)用于將一個字符串轉(zhuǎn)換為日期或時間格式,它可以幫助我們將字符串解析為日期類型,以便在查詢中進行比較、計算和顯示,這篇文章主要給大家介紹了關(guān)于MySQL字符串使用STR_TO_DATE()函數(shù)的相關(guān)資料,需要的朋友可以參考下2024-04-04
mysql?explain中key_len的含義以及計算方法
通常在優(yōu)化SQL查詢的時候,我們都會使用explain分析SQL執(zhí)行計劃,下面這篇文章主要給大家介紹了關(guān)于mysql?explain中key_len的含義以及計算方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-03-03

