SELF JOIN trong SQL
Mỗi phép Join đều phải có hai bảng, tuy nhiên có trường hợp bạn phải thực hiện JOIN trên cùng một bảng thì vẫn được, ta gọi phép JOIN này là SELF JOIN.
SELF JOIN trong SQL được sử dụng để thực hiện phép Join trên cùng một bảng bằng cách nối một bảng với chính nó, coi như đó là hai bảng và thay tên tạm thời ít nhất một bảng.
Cú pháp SELF JOIN trong SQL
Cú pháp cơ bản của SELF JOIN như sau:
SELECT a.ten_cot, b.ten_cot...
FROM bang1 a, bang1 b
WHERE a.cot_chung = b.cot_chung;
Ở đây, mệnh đề WHERE có thể là bất kỳ biểu thức nào theo yêu cầu của bạn.
Ví dụ về SELF JOIN trong SQL
Giả sử bảng NHANVIEN có các bản ghi sau:
Bảng 1: NHANVIEN
+----+----------+-----+-----------+----------+ | ID | TEN |TUOI | DIACHI | LUONG | +----+----------+-----+-----------+----------+ | 1 | Thanh | 32 | Haiphong | 2000.00 | | 2 | Loan | 25 | Hanoi | 1500.00 | | 3 | Nga | 23 | Hanam | 2000.00 | | 4 | Manh | 25 | Hue | 6500.00 | | 5 | Huy | 27 | Hatinh | 8500.00 | | 6 | Cao | 22 | HCM | 4500.00 | | 7 | Lam | 24 | Hanoi | 10000.00 | +----+----------+-----+-----------+----------+
Bây giờ, chúng ta hãy join hai bảng này bằng cách sử dụng SELF JOIN như sau:
SQL> SELECT a.ID, b.TEN, a.LUONG
FROM NHANVIEN a, NHANVIEN b
WHERE a.LUONG < b.LUONG;
Kết quả trả về là:
+----+----------+---------+ | ID | TEN | LUONG | +----+----------+---------+ | 2 | Thanh | 1500.00 | | 2 | Nga | 1500.00 | | 1 | Manh | 2000.00 | | 2 | Manh | 1500.00 | | 3 | Manh | 2000.00 | | 6 | Manh | 4500.00 | | 1 | Huy | 2000.00 | | 2 | Huy | 1500.00 | | 3 | Huy | 2000.00 | | 4 | Huy | 6500.00 | | 6 | Huy | 4500.00 | | 1 | Cao | 2000.00 | | 2 | Cao | 1500.00 | | 3 | Cao | 2000.00 | | 1 | Lam | 2000.00 | | 2 | Lam | 1500.00 | | 3 | Lam | 2000.00 | | 4 | Lam | 6500.00 | | 5 | Lam | 8500.00 | | 6 | Lam | 4500.00 | +----+----------+---------+
Xem thêm các kiểu JOIN:
- INNER JOIN - Trả về các bản ghi có giá trị phù hợp giữa hai bảng.
- LEFT JOIN - Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải.
- RIGHT JOIN - Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên trái.
- FULL JOIN - Trả về tất cả bản ghi ở bảng trái và bảng phải kết hợp lại.
- CARTESIAN JOIN - Trả về tích Đề-các của các tập hợp bản ghi từ hai hoặc nhiều bảng đã được kết hợp.
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:


Cũ vẫn chất
-
Cách tự động đăng nhập vào tài khoản người dùng trên Windows 11/10
Hôm qua -
Quên mật khẩu Wifi đã lưu? Đây là cách xem mật khẩu Wifi trên máy tính
Hôm qua 1 -
Cách tải Liên Minh Tốc Chiến cho iOS và Android
Hôm qua 6 -
Hướng dẫn đổi ID Facebook, thay địa chỉ Facebook mới
Hôm qua -
Những stt cảm động viết cho người yêu cũ
Hôm qua 1 -
Hướng dẫn đổi hình nền máy tính cho Windows
Hôm qua 3 -
Nên sử dụng Linux desktop KDE hay GNOME?
Hôm qua -
Cách khôi phục bài viết đã ẩn trên Facebook bằng điện thoại, máy tính
Hôm qua 1 -
Code Skibidi Tower Defense mới nhất và cách đổi code lấy thưởng
Hôm qua -
Cách kết nối thiết bị Bluetooth trên Windows 10, 8, 7
Hôm qua