Perbedaan antara JOIN dan INNER JOIN

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?

Mengomentari pertanyaan (2)
Larutan

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.

Komentar (5)

Tidak ada, tidak ada perbedaan, murni gula sintaksis.

Komentar (5)

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)

Komentar (0)

Tidak berbeda di antara berbagai implementasi SQL?

Ya, Microsoft Access doesn't memungkinkan hanya bergabung. Hal ini membutuhkan inner join.

Komentar (0)

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
Komentar (3)

Sebagai jawaban lainnya sudah menyatakan tidak ada perbedaan dalam contoh anda.

Relevan sedikit tata bahasa didokumentasikan di sini

 ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [  ] ]
    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;

Komentar (0)