Apa perbedaan antara LEFT JOIN
dan LEFT OUTER JOIN
?
Sesuai dokumentasi: DARI (Transact-SQL):
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Kata kunci OUTER
ditandai sebagai opsional (tertutup dalam tanda kurung siku). Dalam kasus khusus ini, apakah anda tentukan LUAR
atau tidak ada bedanya. Perhatikan bahwa sementara elemen lain dari bergabung dengan klausul ini juga ditandai sebagai opsional, meninggalkan mereka keluar akan membuat perbedaan.
Misalnya, seluruh tipe-bagian dari BERGABUNG
klausul opsional, dalam hal default adalah BATIN
jika anda hanya menentukan BERGABUNG
. Dengan kata lain, ini adalah hukum:
SELECT *
FROM A JOIN B ON A.X = B.Y
Berikut ini's daftar setara dengan sintaks:
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
Juga lihatlah jawaban yang saya tinggalkan di lain ini JADI pertanyaan: SQL kiri bergabung lebih baik dari beberapa tabel DARI baris?.
Untuk menjawab pertanyaan anda tidak ada perbedaan antara KIRI BERGABUNG dan LEFT OUTER JOIN, mereka persis sama yang mengatakan...
INNER JOIN - mengambil data jika hadir di kedua tabel.
OUTER JOIN yang 3 jenis:
LEFT OUTER JOIN
- mengambil data jika hadir di meja sebelah kiri.
RIGHT OUTER JOIN
- mengambil data jika hadir di meja tepat.
FULL OUTER JOIN
- mengambil data jika ada dalam salah satu dari dua tabel.
CROSS BERGABUNG, seperti namanya, tidak [n X m]
yang bergabung segala sesuatu untuk segala sesuatu.
Mirip dengan skenario di mana kita hanya daftar tabel untuk bergabung (dalam DARI
klausul PILIH
pernyataan), menggunakan koma untuk memisahkan mereka.
Poin yang harus diperhatikan:
BERGABUNG
maka secara default adalah INNER JOIN
.LUAR
bergabung harus MENINGGALKAN
| BENAR
| PENUH
anda tidak bisa hanya mengatakan OUTER JOIN
.LUAR
kata kunci dan hanya mengatakan LEFT JOIN
atau KANAN JOIN
atau PENUH BERGABUNG
.Bagi mereka yang ingin memvisualisasikan ini dalam cara yang lebih baik, silakan pergi ke link ini: Penjelasan Visual SQL Bergabung
Apa perbedaan antara kiri join dan left outer join?
Ada. LEFT JOIN
dan LEFT OUTER JOIN
yang setara.
I'm PostgreSQL DBA, sejauh yang saya bisa memahami perbedaan antara luar atau tidak bergabung dengan luar perbedaan adalah topik yang memiliki diskusi yang cukup di seluruh internet. Sampai hari ini saya tidak pernah melihat perbedaan antara keduanya; Jadi aku pergi lebih jauh dan saya mencoba untuk menemukan perbedaan antara mereka. Pada akhirnya saya membaca seluruh dokumentasi tentang hal itu dan aku menemukan jawaban untuk ini,
Jadi jika anda melihat pada dokumentasi (setidaknya di PostgreSQL) anda dapat menemukan kalimat ini:
Di lain kata-kata,
LEFT JOIN
dan LEFT OUTER JOIN
YANG SAMA
KAN BERGABUNG
dan RIGHT OUTER JOIN
YANG SAMA
Saya berharap hal ini dapat berkontribusi untuk mereka yang masih mencoba untuk menemukan jawabannya.
Left Join
dan Left Outer Join
yang satu dan yang *sama**. Mantan adalah singkatan untuk yang terakhir. Hal yang sama dapat dikatakan tentang Kan Bergabung
dan Right Outer Join
hubungan. Demonstrasi akan menggambarkan kesetaraan. Kerja contoh-contoh dari setiap pertanyaan telah disediakan melalui SQL Biola*. Alat ini akan memungkinkan untuk tangan pada manipulasi query.
Mengingat
Kiri Bergabung dan Left Outer Join
Hasil
Kanan Bergabung dan Right Outer Join
Hasil
Saya merasa lebih mudah untuk berpikir tentang Bergabung dalam urutan sebagai berikut:
Sampai aku tahu ini (relatif) model sederhana, BERGABUNG dengan selalu sedikit lebih dari sebuah seni hitam. Sekarang mereka masuk akal.
Semoga ini bisa membantu lebih dari ini membingungkan.
Mengapa KIRI/KANAN dan LUAR KIRI/KANAN LUAR yang sama? Let's menjelaskan mengapa kosakata ini. Memahami bahwa KIRI dan KANAN bergabung adalah kasus-kasus tertentu dari OUTER join, dan oleh karena itu tidak't menjadi sesuatu yang lain dari LUAR KIRI/KANAN LUAR. OUTER join juga disebut FULL LUAR sebagai lawan ke KIRI dan KANAN bergabung dengan yang PARSIAL hasil dari OUTER join. 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 tersebut memiliki alias, serta jelas hanya 3 kasus yang ada: INNER, OUTER, CROSS. Dengan dua sub-kasus LUAR. Kosa kata, cara guru menjelaskan hal ini, serta beberapa jawaban di atas, sering membuatnya terlihat seperti ada banyak yang berbeda jenis bergabung. Tapi itu's benar-benar sangat sederhana.
Untuk menjawab pertanyaan anda
Di Sql Server bergabung dengan sintaks LUAR opsional
Hal ini disebutkan dalam artikel msdn : https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Jadi daftar berikut menunjukkan bergabung sintaksis yang setara dengan dan tanpa LUAR
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Lain yang setara sintaks
INNER JOIN => JOIN
CROSS JOIN => ,
Sangat Menyarankan Dotnet Massa Artice : Bergabung di Sql Server
Ada tiga jenis outer join
Harapan itu'd membantu.
Ada terutama tiga jenis BERGABUNG
Hanya dalam konteks pertanyaan ini, saya ingin memposting 2 'MENERAPKAN' operator juga:
BERGABUNG:
INNER JOIN = BERGABUNG
OUTER JOIN
LEFT OUTER JOIN = KIRI BERGABUNG
RIGHT OUTER JOIN = KANAN BERGABUNG
FULL OUTER JOIN = PENUH BERGABUNG
SELF-JOIN: Ini bukan jenis yang terpisah dari bergabung. Ini pada dasarnya adalah bergabung dengan sebuah meja untuk dirinya sendiri menggunakan salah satu di atas bergabung. Tapi aku merasa itu adalah layak disebut dalam konteks BERGABUNG dengan diskusi seperti yang anda akan mendengar istilah ini dari banyak dalam SQL komunitas Pengembang.
MENERAPKAN:
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
https://stackoverflow.com/questions/9275132/real-life-example-when-to-use-outer-cross-apply-in-sql
Saya menemukan MENERAPKAN operator sangat bermanfaat karena mereka memberikan kinerja yang lebih baik daripada harus melakukan perhitungan yang sama dalam subquery. Mereka juga penggantian banyak fungsi Analitik pada versi SQL Server. Itulah mengapa saya percaya bahwa setelah menjadi nyaman dengan BERGABUNG, salah satu pengembang SQL harus mencoba untuk belajar MENERAPKAN operator berikutnya.