Tôi đồng ý với Cade về những hạn chế của biểu đồ Venn ở đây. Một hình ảnh đại diện tổng hợp hơn có thể là cái này.
Bảng
CHỌN A.Colour, B.Colour TỪ MỘT CROSS JOIN B SQL Fiddle
Phép nối chéo (hoặc tích cacte) tạo ra kết quả với mọi sự kết hợp của các hàng từ hai bảng. Mỗi bảng có 4 hàng nên kết quả là 16 hàng.
CHỌN A.Colour, B.Colour TỪ A INNER THAM GIA B TRÊN A.Colour =B.Colour SQL Fiddle
Phép nối bên trong trả về một cách hợp lý tất cả các hàng từ phép nối chéo khớp với điều kiện nối. Trong trường hợp này, năm làm.
CHỌN A.Colour, B.Colour TỪ A INNER JOIN B ON A.Colour NOT IN ('Green', 'Blue') SQL Fiddle
Điều kiện nối bên trong không nhất thiết phải là điều kiện bình đẳng và nó không cần tham chiếu đến các cột từ cả hai (hoặc thậm chí một trong hai) bảng. Đánh giá A.Colour NOT IN ('Green','Blue')
trên mỗi hàng của kết nối chéo trả về.
Điều kiện kết hợp bên trong của 1=1
sẽ đánh giá thành true cho mọi hàng trong phép nối chéo để hai hàng tương đương nhau ( SQL Fiddle
).
CHỌN A.Colour, B.Colour TỪ TRÁI RA NGOÀI THAM GIA B TRÊN A.Colour =B.Colour SQL Fiddle
Các phép nối bên ngoài được đánh giá một cách logic giống như các phép nối bên trong ngoại trừ việc nếu một hàng từ bảng bên trái (đối với phép nối bên trái) không liên kết với bất kỳ hàng nào từ bảng bên phải thì nó sẽ được giữ nguyên trong kết quả với NULL
giá trị cho các cột bên phải.
CHỌN A.Colour, B.Colour TỪ TRÁI RA NGOÀI THAM GIA B TRÊN A.Colour =B.Colour WHERE B.Colour IS NULL SQL Fiddle
Điều này chỉ hạn chế kết quả trước đó chỉ trả về các hàng có B.Colour IS NULL
. Trong trường hợp cụ thể này, đây sẽ là các hàng được giữ nguyên vì chúng không khớp trong bảng bên phải và truy vấn trả về một hàng màu đỏ duy nhất không khớp trong bảng B
. Đây được gọi là tham gia chống bán.
Điều quan trọng là chọn một cột cho IS NULL
kiểm tra không thể nullable hoặc điều kiện kết hợp đảm bảo rằng bất kỳ NULL
nào các giá trị sẽ bị loại trừ để mẫu này hoạt động chính xác và tránh chỉ đưa trở lại các hàng có NULL
giá trị cho cột đó ngoài các hàng chưa khớp.
CHỌN A.Colour, B.Colour TỪ MỘT NGƯỜI NGOÀI PHẢI THAM GIA B TRÊN A.Colour =B.Colour SQL Fiddle
Các phép nối bên ngoài bên phải hoạt động tương tự như các phép nối bên ngoài bên trái ngoại trừ chúng giữ nguyên các hàng không khớp với bảng bên phải và null mở rộng các cột bên trái.
CHỌN A.Colour, B.Colour TỪ TOÀN BỘ NGOÀI RA THAM GIA B TRÊN A.Colour =B.Colour SQL Fiddle
Các phép nối bên ngoài đầy đủ kết hợp hành vi của các phép nối bên trái và bên phải và bảo toàn các hàng không khớp từ cả bảng bên trái và bên phải.