Pertanyaan Perbedaan antara GABUNG dan INNER GABUNG


Kedua kombinasi ini akan memberi saya 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?

Apakah itu berbeda antara implementasi SQL yang berbeda?


772
2018-02-19 14:47


asal


Jawaban:


Mereka secara fungsional setara, tetapi INNER JOIN dapat menjadi sedikit lebih jelas untuk dibaca, terutama jika kueri memiliki jenis penggabungan lainnya (mis. LEFT atau RIGHT atau CROSS) termasuk di dalamnya.


850
2018-02-19 14:50



Hanya mengetik JOIN melakukan suatu INNER JOIN secara default.

Untuk yang lain, satu gambar terkadang bernilai lebih dari ratusan kata:

Enter image description here

Gambar milik Proyek Kode.



644
2017-10-28 22:56



Tidak, tidak ada perbedaan, murni gula sintaksis.


207
2018-02-19 14:48



INNER JOIN = GABUNG:

INNER JOIN adalah default jika Anda tidak menentukan jenis ketika Anda menggunakan kata GABUNG.

Anda juga dapat menggunakan LEFT OUTER JOIN atau RIGHT OUTER JOIN, dalam hal ini kata OUTER adalah opsional,   atau Anda dapat menentukan CROSS JOIN.

ATAU

Untuk penggabungan batin, sintaksnya adalah:

PILIH ...
  DARI TableA
  [INNER] GABUNG TableB

(dengan kata lain, kata kunci "INNER" adalah pilihan - hasilnya sama   dengan atau tanpa itu)


115
2018-02-28 08:23



Sama halnya dengan OUTER JOINs, kata itu "OUTER" adalah opsional. Ini adalah LEFT atau RIGHT kata kunci yang membuat JOIN sebuah "OUTER" JOIN.

Namun untuk beberapa alasan saya selalu menggunakannya "OUTER" seperti dalam LEFT OUTER JOIN dan tidak pernah LEFT JOIN, tapi saya tidak pernah menggunakannya INNER JOIN, tetapi saya hanya menggunakan "JOIN":

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

44
2018-02-19 15:09



Apakah itu berbeda antara implementasi SQL yang berbeda?

Iya nih, akses microsoft tidak memungkinkan join. Itu membutuhkan inner join.


40
2018-05-15 13:33



Karena jawaban yang lain sudah menyatakan tidak ada perbedaan dalam teladan Anda.

Bit of grammar yang relevan adalah didokumentasikan di sini

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

Menunjukkan bahwa semuanya opsional. Halaman lebih lanjut menjelaskan hal itu

INNER Menentukan semua pasangan pencocokan baris dikembalikan. Buang   baris yang tak tertandingi dari kedua tabel. Ketika tidak ada tipe gabungan yang ditentukan, ini   adalah standarnya.

Tata bahasanya juga menunjukkan bahwa ada satu waktu di mana INNER  aku s diperlukan sekalipun. Saat 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;

enter image description here


21
2017-08-02 16:38