QUYỀN THAM GIA PostgreSQL
QUYỀN THAM GIA
Từ khóa RIGHT JOIN
chọn TẤT CẢ bản ghi từ bảng "bên phải" và các bản ghi phù hợp từ bảng "trái". Kết quả là 0 bản ghi từ phía bên trái nếu không có kết quả trùng khớp.
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 RIGHT JOIN
chúng tôi sẽ nhận được tất cả các bản ghi từ categories
, ngay cả những bản ghi không khớp trong 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
RIGHT 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ừ categories
và chỉ các bản ghi trùng khớp từ testproducts
:
testproduct_id | product_name
| category_name
----------------+------------------------+----------------
1 | Johns Fruit Cake | Confections
6 | Janes Favorite Cheese | Dairy Products
8 | Ellas Special Salmon | Seafood
9 | Roberts Rich Spaghetti | Grains/Cereals
|
| Condiments
|
| Meat/Poultry
|
| Beverages
|
| Produce
(8 rows)
Lưu ý: RIGHT JOIN
và RIGHT OUTER JOIN
sẽ cho kết quả như nhau.
OUTER
là loại kết nối mặc định cho RIGHT JOIN
, vì vậy khi bạn viết RIGHT JOIN
trình phân tích cú pháp thực sự ghi RIGHT OUTER JOIN
.