Saya setuju dengan Cade tentang batasan diagram Venn di sini. Representasi visual yang lebih tepat mungkin seperti ini.
Tabel
PILIH A.Colour, B.Colour FROM A CROSS JOIN B SQL Fiddle
Gabungan silang (atau produk kartesius) menghasilkan hasil dengan setiap kombinasi baris dari dua tabel. Setiap tabel memiliki 4 baris sehingga menghasilkan 16 baris dalam hasilnya.
PILIH A.Warna, B.Warna DARI A INNER GABUNG B PADA A.Warna =B.Warna Fiddle SQL
Inner join secara logis mengembalikan semua baris dari cross join yang cocok dengan kondisi join. Dalam hal ini lima lakukan.
PILIH A.Warna, B.Warna DARI A INNER JOIN B PADA A.Warna TIDAK DI ('Hijau','Biru') Fiddle SQL
Kondisi inner join tidak harus merupakan kondisi kesetaraan dan tidak perlu mereferensikan kolom dari kedua (atau bahkan salah satu) tabel. Mengevaluasi A.Colour NOT IN ('Green','Blue')
pada setiap baris salib bergabung kembali.
Kondisi gabungan dalam 1=1
akan dievaluasi menjadi true untuk setiap baris dalam gabungan silang sehingga keduanya setara (SQL Fiddle
).
PILIH A.Warna, B.Warna DARI KIRI LUAR GABUNG B PADA A.Warna =B.Warna Fiddle SQL
Gabungan Luar dievaluasi secara logis dengan cara yang sama seperti Gabungan dalam kecuali bahwa jika baris dari tabel kiri (untuk gabungan kiri) tidak bergabung dengan baris apa pun dari tabel kanan sama sekali, itu dipertahankan dalam hasil dengan NULL
nilai untuk kolom sebelah kanan.
PILIH A.Warna, B.Warna DARI KIRI LUAR GABUNG B PADA A.Warna =B.Warna MANA B.Warna NULL SQL Fiddle
Ini hanya membatasi hasil sebelumnya untuk hanya mengembalikan baris di mana B.Colour IS NULL
. Dalam kasus khusus ini, ini akan menjadi baris yang dipertahankan karena tidak memiliki kecocokan di tabel sebelah kanan dan kueri mengembalikan satu baris merah yang tidak cocok dalam tabel B
. Ini dikenal sebagai anti semi join.
Penting untuk memilih kolom untuk IS NULL
pengujian yang tidak dapat dibatalkan atau yang kondisi gabungannya memastikan bahwa NULL
nilai akan dikecualikan agar pola ini berfungsi dengan benar dan hindari hanya mengembalikan baris yang kebetulan memiliki NULL
nilai untuk kolom itu selain baris yang tidak cocok.
PILIH A.Warna, B.Warna DARI LUAR YANG TEPAT GABUNG B PADA A.Warna =B.Warna Fiddle SQL
Gabungan luar kanan bertindak serupa dengan Gabungan luar kiri kecuali mereka mempertahankan baris yang tidak cocok dari tabel kanan dan null memperpanjang kolom sebelah kiri.
PILIH A.Colour, B.Colour DARI A FULL OUTER JOIN B PADA A.Colour =B.Colour Fiddle SQL
Gabungan luar penuh menggabungkan perilaku gabungan kiri dan kanan dan mempertahankan baris yang tidak cocok dari tabel kiri dan kanan.