THAM GIA ĐẦY ĐỦ PostgreSQL
THAM GIA ĐẦY ĐỦ
Từ khóa FULL JOIN
chọn TẤT CẢ các bản ghi từ cả hai bảng, ngay cả khi không có bản ghi nào khớp. Đối với các hàng khớp, các giá trị từ cả hai bảng đều có sẵn, nếu không khớp, các trường trống sẽ nhận giá trị NULL
.
Hãy xem một ví dụ sử dụng bảng testproducts
giả của chúng tôi:
testproduct_id | product_name
| category_id
----------------+------------------------+-------------
1 | Johns Fruit Cake |
3
2 | Marys Healthy Mix |
9
3 | Peters Scary Stuff |
10
4 | Jims Secret Recipe |
11
5 | Elisabeths Best Apples |
12
6 | Janes Favorite Cheese |
4
7 | Billys Home Made Pizza |
13
8 | Ellas Special Salmon |
8
9 | Roberts Rich Spaghetti |
5
10 | Mias Popular Ice |
14
(10 rows)
Chúng ta sẽ cố gắng nối bảng testproducts
với bảng categories
:
category_id | category_name |
description
-------------+----------------+------------------------------------------------------------
1 | Beverages | Soft drinks, coffees, teas,
beers, and ales
2 | Condiments | Sweet and savory sauces, relishes,
spreads, and seasonings
3 | Confections | Desserts, candies, and sweet breads
4 | Dairy Products | Cheeses
5 | Grains/Cereals | Breads, crackers, pasta, and cereal
6 | Meat/Poultry | Prepared meats
7 | Produce | Dried fruit and bean
curd
8 |
Seafood | Seaweed and fish
(8
rows)
Lưu ý: Nhiều sản phẩm trong testproducts
có category_id
không khớp với bất kỳ danh mục nào trong bảng categories
.
Bằng cách sử dụng FULL JOIN
, chúng ta sẽ nhận được tất cả các bản ghi từ cả bảng categories
và bảng testproducts
:
Ví dụ
Kết hợp testproducts
với categories
bằng cột category_id
:
SELECT
testproduct_id, product_name, category_name
FROM testproducts
FULL JOIN categories ON testproducts.category_id = categories.category_id;
Chạy ví dụ »Kết quả
Tất cả các bản ghi từ cả hai bảng đều được trả về.
Các hàng không khớp sẽ nhận giá trị NULL
trong các trường từ bảng đối diện:
testproduct_id | product_name
| category_name
----------------+-------------------------+----------------
1 | Johns Fruit Cake | Confections
2 | Marys Healthy Mix |
3 | Peters Scary Stuff |
4 | Jims Secret Recipe |
5 | Elisabeths Best Apples |
6 | Janes Favorite Cheese | Dairy Products
7 | Billys Home Made Pizza |
8 | Ellas Special Salmon | Seafood
9 | Roberts Rich Spaghetti | Grains/Cereals
10 | Mias Popular Ice |
|
| Condiments
|
| Meat/Poultry
|
| Beverages
|
| Produce
(14 rows)
Lưu ý: FULL JOIN
và FULL OUTER JOIN
sẽ cho kết quả như nhau.
OUTER
là loại kết nối mặc định cho FULL JOIN
, vì vậy khi bạn viết FULL JOIN
trình phân tích cú pháp thực sự ghi FULL OUTER JOIN
.