Keduanya bergabung ini akan memberikan hasil yang sama:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
Apakah ada perbedaan antara pernyataan dalam kinerja atau sebaliknya?
Tidak berbeda di antara berbagai implementasi SQL?
Mereka yang secara fungsional setara, tapi INNER JOIN
bisa menjadi sedikit lebih jelas untuk dibaca, terutama jika permintaan telah bergabung dengan jenis (yaitu KIRI
atau KANAN
atau CROSS
) termasuk di dalamnya.
INNER JOIN = GABUNG
INNER JOIN adalah default jika anda don't menentukan jenis ketika anda menggunakan kata GABUNG.
Anda juga dapat menggunakan LEFT OUTER JOIN atau RIGHT OUTER JOIN, dalam hal ini kata LUAR adalah opsional, atau anda dapat menentukan CROSS BERGABUNG.
ATAU
Untuk bergabung batin, sintaksnya adalah:
PILIH ... DARI TableA [INNER] JOIN TableB
(dengan kata lain, "DALAM" kata kunci opsional - hasil yang sama dengan atau tanpa itu)
Tidak berbeda di antara berbagai implementasi SQL?
Ya, Microsoft Access doesn't memungkinkan hanya bergabung
. Hal ini membutuhkan inner join
.
Demikian pula dengan Bergabung dengan LUAR
, kata "LUAR"
adalah opsional. It's KIRI
atau KANAN
kata kunci yang membuat BERGABUNG
an "LUAR" BERGABUNG
.
Namun untuk beberapa alasan saya selalu menggunakan "LUAR"
seperti dalam LEFT OUTER JOIN
dan tidak pernah LEFT JOIN
, tapi saya tidak pernah menggunakan INNER JOIN
, melainkan saya hanya menggunakan "BERGABUNG"
:
SELECT ColA, ColB, ...
FROM MyTable AS T1
JOIN MyOtherTable AS T2
ON T2.ID = T1.ID
LEFT OUTER JOIN MyOptionalTable AS T3
ON T3.ID = T1.ID
Sebagai jawaban lainnya sudah menyatakan tidak ada perbedaan dalam contoh anda.
Relevan sedikit tata bahasa didokumentasikan di sini
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Menunjukkan bahwa semua ini adalah opsional. Halaman selanjutnya menjelaskan bahwa
BATIN
yang Menentukan semua pasangan yang cocok dari baris yang dikembalikan. Membuang tak tertandingi baris dari tabel kedua. Bila tidak bergabung dengan jenis yang ditentukan, ini adalah default.
Tata bahasa tidak juga menunjukkan bahwa ada satu waktu di mana BATIN
adalah diperlukan sekalipun. Ketika menentukan petunjuk bergabung.
Lihat contoh di bawah ini
CREATE TABLE T1(X INT);
CREATE TABLE T2(Y INT);
SELECT *
FROM T1
LOOP JOIN T2
ON X = Y;
SELECT *
FROM T1
INNER LOOP JOIN T2
ON X = Y;