Arasındaki fark nedir LEFT JOIN
ve LEFT OUTER JOIN
?
Arasındaki fark nedir LEFT JOIN
ve LEFT OUTER JOIN
?
Yanıtlar:
Belgelere göre: FROM (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Anahtar kelime OUTER
isteğe bağlı olarak işaretlenmiştir (köşeli parantez içine alınmıştır). Bu özel durumda, belirtip belirtmemeniz OUTER
fark etmez. Diğer unsurları maddesini katılmak ederken aynı zamanda, isteğe bağlı olarak işaretlenmiş ayrılacağını Not onları dışarı irade bir fark yaratır.
Örneğin, JOIN
cümlenin tüm tip kısmı isteğe bağlıdır, bu durumda INNER
yalnızca belirtmeniz durumunda varsayılan değerdir JOIN
. Başka bir deyişle, bu yasaldır:
SELECT *
FROM A JOIN B ON A.X = B.Y
Eşdeğer sözdizimlerinin listesi:
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
Ayrıca bu diğer SO soru sol cevap bir göz atın: SQL sol FROM satırında birden fazla tablo vs katılmak? .
INNER JOIN
sağda ve JOIN
solda olmak daha iyi olmaz mıydı ?
JOIN
s için de takip etmenizin tutarlı olacağını düşündüm .
Sorunuzu cevaplamak için LEFT JOIN ve LEFT OUTER JOIN arasında hiçbir fark yoktur, bunlar tamamen aynıdır ...
INNER JOIN - her iki tabloda da varsa verileri getirir.
DIŞ artır vardır 3 tip:
LEFT OUTER JOIN
- sol tabloda mevcutsa verileri getirir.RIGHT OUTER JOIN
- sağ tabloda varsa verileri getirir.FULL OUTER JOIN
- iki tablodan birinde varsa verileri getirir.CROSS JOIN , adından da anlaşılacağı gibi, [n X m]
bu her şeyi her şeye katıyor.
Birleştirme için tabloları ( ifadenin FROM
yan tümcesinde SELECT
), ayırmak için virgül kullanarak listelediğimiz senaryoya benzer .
Dikkat edilmesi gereken hususlar:
JOIN
, varsayılan olarak birINNER JOIN
.OUTER
katılmak olmalı LEFT
| RIGHT
| FULL
sadece söyleyemezsinOUTER JOIN
.OUTER
kelime ve sadece söylemek LEFT JOIN
ya RIGHT JOIN
ya FULL JOIN
.Bunları daha iyi bir şekilde görselleştirmek isteyenler için lütfen şu bağlantıya gidin: SQL Birleşimlerinin Görsel Açıklaması
CROSS JOIN
aynı FULL JOIN
mı?
Cross Join
ve arasındaki farkla ilgili değerli cevabınıza özel bir not eklemeyi düşünün Full Outer Join
... bir şekilde benzer görünüyor.
Sol birleşim ve sol dış birleşim arasındaki fark nedir?
Hiçbir şey . LEFT JOIN
ve LEFT OUTER JOIN
eşdeğerdir.
OUTER
isteğe bağlı olduğu hakkında bir referans veya açıklama eklerseniz iyi olur .
Ben bir PostgreSQL DBA, dış ya da değil dış birleşimler arasındaki farkı anlayabildiğim kadarıyla tüm internet çevresinde önemli bir tartışma var bir konu. Bugüne kadar bu ikisi arasında hiç fark görmedim; Bu yüzden daha ileri gittim ve aralarındaki farkı bulmaya çalışıyorum. Sonunda bununla ilgili tüm belgeleri okudum ve bunun cevabını buldum,
Yani belgelere bakarsanız (en azından PostgreSQL'de) bu ifadeyi bulabilirsiniz:
Diğer bir deyişle,
LEFT JOIN
ve LEFT OUTER JOIN
AYNI
RIGHT JOIN
ve RIGHT OUTER JOIN
AYNI
Umarım hala cevabı bulmaya çalışanlar için bir katkı olabilir.
Left Join
ve Left Outer Join
bir ve vardır aynı . Birincisi, ikincisinin kısayoludur. Aynı şey ilişki Right Join
ve Right Outer Join
ilişki için de söylenebilir . Gösteri eşitliği gösterecek. Her bir sorgunun çalışma örnekleri SQL Fiddle ile sağlanmıştır . Bu araç, sorgunun manipüle edilmesine izin verecektir.
verilmiş
Sol Bağlantı ve Sol Dış Bağlantı
Sonuçlar
Doğru Birleştirme ve Doğru Birleştirme
Sonuçlar
Joins'i aşağıdaki sırayla düşünmeyi daha kolay buluyorum:
Bu (nispeten) basit modeli anlayana kadar, JOINS her zaman biraz daha siyah bir sanattı. Şimdi tam mantıklı.
Umarım bu daha çok yardımcı olur.
SOL / SAĞ ve SOL DIŞ / SAĞ DIŞ neden aynı? Neden bu kelimeyi açıklayalım. SOL ve SAĞ birleşimlerin OUTER birleşiminin özel durumları olduğunu ve bu nedenle DIŞ SOL / DIŞ SAĞ dışında bir şey olamayacağını anlayın. OUTER birleşimine, OUTER birleşiminin KISMİ sonuçları olan SOL ve SAĞ birleşimlerin yerine FULL OUTER da denir . Aslında:
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)
Bu operasyonların neden takma adları olduğu ve sadece 3 vakanın olduğu açık: INNER, OUTER, CROSS. OUTER için iki alt durumla. Kelime dağarcığı, öğretmenlerin bunu açıklama şekli ve yukarıdaki bazı cevaplar, çoğu zaman farklı türde katılımların varmış gibi görünmesini sağlar. Ama aslında çok basit.
JOIN
anlamına gelip gelmediğini açıklayabilir misiniz INNER JOIN
?
Soruna cevap vermek için
Sql Server sözdiziminde OUTER isteğe bağlıdır
Msdn makalesinde bahsedilmiştir: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Aşağıdaki liste OUTER ile ve OUTER olmadan eşdeğer sözdizimlerini gösterir
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Diğer eşdeğer sözdizimleri
INNER JOIN => JOIN
CROSS JOIN => ,
Dotnet Mob Artice: Sql Sunucusuna Katılır
C) Dış birleşim:
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
Umarım yardımcı olur.
Esas olarak üç tip JOIN vardır
Dış: üç tiptir
Çapraz Katılım: her şeyi her şeye katıyor
Sözdizimsel şeker, sıradan okuyucu için birleştirmenin bir iç değil olduğunu daha açık hale getirir.
Sadece bu soru bağlamında, 2 'UYGULA' operatörünü de göndermek istiyorum:
KATILIR :
INNER JOIN = KATIL
DIŞ KATILIM
SOL İÇ GİRİŞ = SOL GİRİŞ
SAĞ DIŞ BİRLEŞTİR = SAĞ BİRLEŞTİR
TAM DIŞ ORTAK = FULL KATIL
ÇAPRAZ KATIL
KENDİNİ KATILIN : Bu tam olarak ayrı bir birleştirme türü değildir. Bu, temel olarak yukarıdaki birleştirmelerden birini kullanarak bir tabloyu birleştirir. Ancak, bu terimi SQL Geliştirici topluluğundaki birçok kişiden duyacağınız için JOIN tartışmaları bağlamında bahsetmeye değer olduğunu hissettim.
UYGULA :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
SQL'de OUTER / CROSS UYGULAMA ne zaman kullanılır?
APPLY operatörünü, bir alt sorguda aynı hesaplamayı yapmaktan daha iyi performans verdiği için çok faydalı buluyorum. Ayrıca, SQL Server'ın eski sürümlerindeki birçok Analitik fonksiyonun yerini alırlar. Bu yüzden JOINS ile rahat olduktan sonra, bir SQL geliştiricisinin bir sonraki UYGULA işleçlerini öğrenmeye çalışması gerektiğine inanıyorum.
OUTER
Anahtar kelime isteğe bağlıdır.