Thứ Ba, 12 tháng 1, 2021

SQL UNION

Toán tử SQL UNION

Toán tử UNION được sử dụng để kết hợp tập kết quả của hai hoặc nhiều câu lệnh SELECT.

  • Mỗi câu lệnh SELECT trong UNION phải có cùng số cột
  • Các cột cũng phải có kiểu dữ liệu tương tự
  • Các cột trong mỗi câu lệnh SELECT cũng phải theo cùng một thứ tự

Cú pháp UNION

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

UNION ALL Cú pháp

Toán tử UNION chỉ chọn các giá trị riêng biệt theo mặc định. Để cho phép các giá trị trùng lặp, hãy sử dụng UNION ALL:

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

Lưu ý: Tên cột trong tập hợp kết quả thường bằng với tên cột trong câu lệnh SELECT đầu tiên trong UNION.


Cơ sở dữ liệu Demo

Trong hướng dẫn này, chúng tôi sẽ sử dụng cơ sở dữ liệu mẫu Northwind nổi tiếng.

Dưới đây là lựa chọn từ bảng "Khách hàng":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1

Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

Và lựa chọn từ bảng "Nhà cung cấp":

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountry
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonEC1 4SDUK
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA

Ví dụ về SQL UNION

Câu lệnh SQL sau trả về các thành phố (chỉ các giá trị riêng biệt) từ cả bảng "Khách hàng" và "Nhà cung cấp":

Thí dụ

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;

Lưu ý: Nếu một số khách hàng hoặc nhà cung cấp có cùng thành phố, mỗi thành phố sẽ chỉ được liệt kê một lần, vì UNION chỉ chọn các giá trị riêng biệt. Sử dụng UNION ALL để chọn các giá trị trùng lặp!


Ví dụ về SQL UNION ALL

Câu lệnh SQL sau trả về các thành phố (cũng có giá trị trùng lặp) từ cả bảng "Khách hàng" và "Nhà cung cấp":

Thí dụ

SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;

UNION SQL với WHERE

Câu lệnh SQL sau trả về các thành phố của Đức (chỉ các giá trị khác biệt) từ cả bảng "Khách hàng" và "Nhà cung cấp":

Thí dụ

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;

UNION SQL TẤT CẢ VỚI WHERE

Câu lệnh SQL sau trả về các thành phố của Đức (cũng có giá trị trùng lặp) từ cả bảng "Khách hàng" và "Nhà cung cấp":

Thí dụ

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;

Một ví dụ khác về UNION

Câu lệnh SQL sau liệt kê tất cả khách hàng và nhà cung cấp:

Thí dụ

SELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;

Lưu ý "Loại AS" ở trên - nó là một bí danh. Bí danh SQL được sử dụng để đặt tên tạm thời cho bảng hoặc cột. Bí danh chỉ tồn tại trong thời gian truy vấn. Vì vậy, ở đây chúng ta đã tạo một cột tạm thời có tên "Loại", liệt kê danh sách người liên hệ là "Khách hàng" hay "Nhà cung cấp".

==================================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

#OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #tự học oracle

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master