Apa perbedaan antara LEFT JOIN
dan LEFT OUTER JOIN
?
Apa perbedaan antara LEFT JOIN
dan LEFT OUTER JOIN
?
Jawaban:
Sesuai dokumentasi: FROM (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Kata kunci OUTER
ditandai sebagai opsional (terlampir dalam tanda kurung siku). Dalam kasus khusus ini, apakah Anda menentukan OUTER
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 adalah INNER
jika Anda hanya menentukan JOIN
. Dengan kata lain, ini legal:
SELECT *
FROM A JOIN B ON A.X = B.Y
Berikut daftar sintaks yang setara:
A LEFT JOIN B A LEFT OUTER JOIN B
A RIGHT JOIN B A RIGHT OUTER JOIN B
A FULL JOIN B A FULL OUTER JOIN B
A INNER JOIN B A JOIN B
Lihat juga jawaban yang saya tinggalkan pada pertanyaan SO lainnya ini: SQL left join vs multiple tables on FROM line? .
INNER JOIN
di sebelah kanan dan JOIN
di sebelah kiri dalam daftar setara?
JOIN
juga.
Untuk menjawab pertanyaan Anda, tidak ada perbedaan antara LEFT JOIN dan LEFT OUTER JOIN, mereka persis sama yang mengatakan ...
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
klausa SELECT
pernyataan), menggunakan koma untuk memisahkan mereka.
Poin yang perlu diperhatikan:
JOIN
maka secara default itu adalah INNER JOIN
.OUTER
bergabung harus LEFT
| RIGHT
| FULL
Anda tidak bisa begitu saja mengatakannya OUTER JOIN
.OUTER
kata kunci dan hanya mengatakan LEFT JOIN
atau RIGHT JOIN
atau FULL JOIN
.Bagi mereka yang ingin memvisualisasikan ini dengan cara yang lebih baik, silakan kunjungi tautan ini: Penjelasan Visual dari SQL Joins
CROSS JOIN
sama FULL JOIN
?
Cross Join
dan Full Outer Join
... dalam beberapa hal tampaknya serupa.
Apa perbedaan antara join kiri dan join kiri?
Tidak ada . LEFT JOIN
dan LEFT OUTER JOIN
setara.
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:
Dengan kata lain,
LEFT JOIN
dan LEFT OUTER JOIN
ADALAH SAMA
RIGHT JOIN
dan RIGHT OUTER JOIN
ADALAH SAMA
Saya harap ini bisa menjadi kontribusi bagi mereka yang masih berusaha menemukan jawabannya.
Left Join
dan Left Outer Join
satu dan sama . Yang pertama adalah singkatan untuk yang terakhir. Hal yang sama dapat dikatakan tentang Right Join
dan Right 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
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.
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:
Table A | Table B Table A | Table B Table A | Table B Table A | Table B
1 | 5 1 | 1 1 | 1 1 | 1
2 | 1 2 | 2 2 | 2 2 | 2
3 | 6 3 | null 3 | null - | -
4 | 2 4 | null 4 | null - | -
null | 5 - | - null | 5
null | 6 - | - null | 6
OUTER JOIN (FULL) LEFT OUTER (partial) RIGHT OUTER (partial)
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.
JOIN
menyiratkan INNER JOIN
" cocok dengan alasan Anda untuk bergabung dengan vocab?
Untuk menjawab pertanyaan Anda
Dalam Sql Server bergabung dengan sintaks OUTER adalah opsional
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
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Sintaks setara lainnya
INNER JOIN => JOIN
CROSS JOIN => ,
Sangat Merekomendasikan Dotnet Mob Artice: Bergabung di Sql Server
C) Outer join:
There are three type of outer join
1) Left Outer Join = Left Join
2) Right Outer Join = Right Join
3) Full Outer Join = Full Join
Semoga ini bisa membantu.
Ada terutama tiga jenis GABUNG
Luar: ada tiga jenis
Cross Join: gabungkan semuanya dengan segalanya
Gula sintaksis, membuatnya lebih jelas bagi pembaca biasa bahwa bergabung bukan batin.
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.
OUTER
kunci adalah opsional.