SQL UNION運算符 SQL UNION運算符用於組合兩個或多個SELECT語句的結果集。 每個UNION中的SELECT語句必須具有相同數量的列。 列的數據類型也必須相似。 每個SELECT語句中的列也必須按照相同的順序排列。 UNION語法 SELECT column_name(s) FRO ...
SQL UNION運算符
SQL UNION
運算符用於組合兩個或多個SELECT
語句的結果集。
- 每個
UNION
中的SELECT
語句必須具有相同數量的列。 - 列的數據類型也必須相似。
- 每個
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;
註意:結果集中的列名通常等於第一個SELECT
語句中的列名。
演示資料庫
在本教程中,我們將使用著名的Northwind示例資料庫。
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別名用於給表或列一個臨時的名稱。別名僅在查詢的持續時間記憶體在。因此,這裡我們創建了一個名為“Type”的臨時列,其中列出了聯繫人是“Customer”還是“Supplier”。
SQL GROUP BY語句
GROUP BY
語句將具有相同值的行分組為摘要行,通常與聚合函數一起使用,以根據一個或多個列對結果集進行分組。
GROUP BY語法
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
演示資料庫
以下是Northwind示例資料庫中“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語句列出了每個國家的客戶數量:
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
以下SQL語句列出了每個國家的客戶數量,按高到低排序:
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
演示資料庫
以下是Northwind示例資料庫中“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語句列出了每個承運人發送的訂單數量:
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;
最後
為了方便其他設備和平臺的小伙伴觀看往期文章:公眾號搜索Let us Coding
,或者掃描下方二維碼,關註公眾號,即可獲取最新文章。
看完如果覺得有幫助,歡迎點贊、收藏和關註