Skip to content

Join SQL dijelaskan

Perbandingan tipe JOIN SQL: inner, outer, cross, self, lateral, natural — apa yang dikembalikan masing-masing, dengan contoh satu baris.

Join menggabungkan baris dari dua tabel berdasarkan kunci bersama. Tipe join menentukan baris mana yang bertahan saat kunci cocok, tidak cocok, atau berulang.

Tabel referensi · 8 entri
8 of 8 rows
Inner dan outer
Hanya baris yang kondisi ON-nya cocok di kedua tabel. Baris yang tidak cocok di kedua sisi dibuang.SELECT u.name, o.total FROM users u INNER JOIN orders o ON u.id = o.user_id;
Semua baris dari tabel kiri. Kolom kanan bernilai NULL bila tidak ada kecocokan.SELECT u.name, o.total FROM users u LEFT OUTER JOIN orders o ON u.id = o.user_id;
Semua baris dari tabel kanan. Kolom kiri bernilai NULL bila tidak ada kecocokan.SELECT u.name, o.total FROM users u RIGHT OUTER JOIN orders o ON u.id = o.user_id;
Semua baris dari kedua tabel. Sisi yang tidak cocok diisi dengan NULL.SELECT u.name, o.total FROM users u FULL OUTER JOIN orders o ON u.id = o.user_id;
Cross dan self
Produk Kartesius. Setiap baris kiri dipasangkan dengan setiap baris kanan. Tidak ada klausa ON.SELECT u.name, o.total FROM users u CROSS JOIN orders o;
Tabel yang digabungkan dengan dirinya sendiri lewat alias. Membandingkan baris di dalam satu tabel.SELECT a.id AS o1, b.id AS o2 FROM orders a JOIN orders b ON a.user_id = b.user_id WHERE a.id < b.id;
Lanjutan
Subquery di FROM yang dievaluasi per baris luar. Subquery dapat merujuk kolom tabel luar.SELECT u.name, o.total FROM users u, LATERAL (SELECT total FROM orders WHERE user_id = u.id LIMIT 1) o;
Menggabungkan pada kolom yang namanya sama. Tidak ada klausa ON. Hati-hati terhadap tabrakan kunci yang tidak disengaja.SELECT u.name, o.total FROM users u NATURAL JOIN orders o;