Apa perbedaan antara LEFT JOIN
dan LEFT OUTER JOIN
?
sql-server
tsql
left-join
outer-join
KG Sosa
sumber
sumber
OUTER
kunci adalah opsional.Jawaban:
Sesuai dokumentasi: FROM (Transact-SQL) :
Kata kunci
OUTER
ditandai sebagai opsional (terlampir dalam tanda kurung siku). Dalam kasus khusus ini, apakah Anda menentukanOUTER
atau tidak ada bedanya. Perhatikan bahwa sementara unsur-unsur lain dari bergabung klausa juga ditandai sebagai opsional, meninggalkan mereka keluar akan membuat perbedaan.Misalnya, seluruh bagian-jenis
JOIN
klausa adalah opsional, dalam hal ini defaultnya adalahINNER
jika Anda hanya menentukanJOIN
. Dengan kata lain, ini legal:Berikut daftar sintaks yang setara:
Lihat juga jawaban yang saya tinggalkan pada pertanyaan SO lainnya ini: SQL left join vs multiple tables on FROM line? .
sumber
INNER JOIN
di sebelah kanan danJOIN
di sebelah kiri dalam daftar setara?JOIN
juga.Di tingkat teratas ada 3 jenis gabungan:
INNER JOIN - mengambil data jika ada di kedua tabel.
OUTER JOIN terdiri dari 3 jenis:
LEFT OUTER JOIN
- mengambil data jika ada di tabel sebelah kiri.RIGHT OUTER JOIN
- mengambil data jika ada di tabel kanan.FULL OUTER JOIN
- mengambil data jika ada di salah satu dari dua tabel.LINTAS BERGABUNG , seperti namanya, apakah
[n X m]
itu menggabungkan segalanya dengan segalanya.Mirip dengan skenario di mana kami cukup daftar tabel untuk bergabung (dalam
FROM
klausaSELECT
pernyataan), menggunakan koma untuk memisahkan mereka.Poin yang perlu diperhatikan:
JOIN
maka secara default itu adalahINNER JOIN
.OUTER
bergabung harusLEFT
|RIGHT
|FULL
Anda tidak bisa begitu saja mengatakannyaOUTER JOIN
.OUTER
kata kunci dan hanya mengatakanLEFT JOIN
atauRIGHT JOIN
atauFULL JOIN
.Bagi mereka yang ingin memvisualisasikan ini dengan cara yang lebih baik, silakan kunjungi tautan ini: Penjelasan Visual dari SQL Joins
sumber
CROSS JOIN
samaFULL JOIN
?Cross Join
danFull Outer Join
... dalam beberapa hal tampaknya serupa.Tidak ada .
LEFT JOIN
danLEFT OUTER JOIN
setara.sumber
OUTER
ini opsional.Saya seorang DBA PostgreSQL, sejauh yang saya bisa mengerti perbedaan antara luar atau tidak, perbedaan luar adalah topik yang memiliki banyak diskusi di seluruh internet. Sampai hari ini saya tidak pernah melihat perbedaan antara keduanya; Jadi saya melangkah lebih jauh dan saya mencoba untuk menemukan perbedaan di antara mereka. Pada akhirnya saya membaca seluruh dokumentasi tentang hal itu dan saya menemukan jawabannya,
Jadi jika Anda melihat dokumentasi (setidaknya dalam PostgreSQL) Anda dapat menemukan frasa ini:
"Kata-kata
INNER
danOUTER
adalah opsional dalam segala bentuk.INNER
Adalah default,LEFT
,RIGHT
, danFULL
menyiratkan bergabung luar."Dengan kata lain,
LEFT JOIN
danLEFT OUTER JOIN
ADALAH SAMARIGHT JOIN
danRIGHT OUTER JOIN
ADALAH SAMASaya harap ini bisa menjadi kontribusi bagi mereka yang masih berusaha menemukan jawabannya.
sumber
Left Join
danLeft Outer Join
satu dan sama . Yang pertama adalah singkatan untuk yang terakhir. Hal yang sama dapat dikatakan tentangRight Join
danRight Outer Join
hubungan. Demonstrasi akan menggambarkan kesetaraan. Contoh kerja dari setiap kueri telah disediakan melalui SQL Fiddle . Alat ini akan memungkinkan untuk manipulasi kueri.Diberikan
Gabung Kiri dan Gabung Kiri Luar
Hasil
Gabung Kanan dan Gabung Luar Kanan
Hasil
sumber
Saya merasa lebih mudah untuk memikirkan Bergabung dalam urutan berikut:
Sampai saya menemukan model sederhana (relatif) ini, GABUNGAN selalu lebih merupakan seni hitam. Sekarang mereka masuk akal.
Semoga ini bisa membantu lebih dari yang membingungkan.
sumber
Mengapa LEFT / RIGHT dan LEFT OUTER / RIGHT OUTER sama? Mari kita jelaskan mengapa kosakata ini. Memahami bahwa bergabung dengan LEFT dan RIGHT adalah kasus khusus dari OUTER join, dan karenanya tidak bisa lain dari OUTER LEFT / OUTER RIGHT. Gabung OUTER juga disebut FULL OUTER sebagai kebalikan dari bergabung LEFT dan RIGHT yang merupakan hasil parsial dari join OUTER. Memang:
Sekarang jelas mengapa operasi-operasi tersebut memiliki alias, dan juga jelas hanya ada 3 kasus: INNER, OUTER, CROSS. Dengan dua sub-kasus untuk OUTER. Kosakata, cara guru menjelaskan hal ini, serta beberapa jawaban di atas, sering membuatnya terlihat seperti ada banyak jenis gabung yang berbeda. Tapi sebenarnya sangat sederhana.
sumber
JOIN
menyiratkanINNER JOIN
" cocok dengan alasan Anda untuk bergabung dengan vocab?Untuk menjawab pertanyaan Anda
Disebutkan dalam artikel msdn: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Jadi daftar berikut ini menunjukkan bergabung dengan sintaks yang setara dengan dan tanpa OUTER
Sintaks setara lainnya
Sangat Merekomendasikan Dotnet Mob Artice: Bergabung di Sql Server
sumber
Hanya ada 3 bergabung:
C) Outer join:
Semoga ini bisa membantu.
sumber
Ada terutama tiga jenis GABUNG
Luar: ada tiga jenis
Cross Join: gabungkan semuanya dengan segalanya
sumber
Gula sintaksis, membuatnya lebih jelas bagi pembaca biasa bahwa bergabung bukan batin.
sumber
Hanya dalam konteks pertanyaan ini, saya ingin memposting 2 operator 'BERLAKU' juga:
BERGABUNG :
INNER JOIN = BERGABUNG
OUTER BERGABUNG
LEFT OUTER JOIN = LEFT JOIN
BERGABUNG DENGAN BENAR = BERGABUNG DENGAN BENAR
FULL OUTER JOIN = FULL JOIN
LINTAS BERGABUNG
BERGABUNG DIRI : Ini bukan tipe gabungan yang terpisah. Ini pada dasarnya bergabung dengan tabel untuk dirinya sendiri menggunakan salah satu gabungan di atas. Tapi saya merasa perlu disebutkan dalam konteks GABUNG diskusi karena Anda akan mendengar istilah ini dari banyak di komunitas Pengembang SQL.
BERLAKU :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
Contoh kehidupan nyata, kapan harus menggunakan OUTER / CROSS BERLAKU dalam SQL
Saya menemukan operator BERLAKU sangat bermanfaat karena mereka memberikan kinerja yang lebih baik daripada harus melakukan perhitungan yang sama dalam subquery. Mereka juga penggantian banyak fungsi analitik dalam versi SQL Server yang lebih lama. Itu sebabnya saya percaya bahwa setelah merasa nyaman dengan BERGABUNG, satu pengembang SQL harus mencoba mempelajari operator BERLAKU selanjutnya.
sumber