[sql] 🚀 “INNER JOIN” ve “OUTER JOIN” arasındaki fark nedir?
Ayrıca nasıl LEFT JOIN , RIGHT JOIN ve FULL JOIN fit?
Chris de Vries2008-09-012008-09-01 22:36:06Z
İki kopya içermeyen sütunlara katıldığınızı varsayarsak, bu çok yaygın bir durumdur:
A ve B'nin bir iç birleştirmesi, A kesişen B'nin sonucunu verir, yani Venn şeması kesişiminin iç kısmı .
A ve B'nin bir dış birleşimi, A birliğinin B sonuçlarını, yani bir Venn şeması birliğinin dış kısımlarını verir.
Her birinin tek bir sütunu olan iki tablonuz olduğunu ve verilerinizin aşağıdaki gibi olduğunu varsayalım:
(1,2) 'nin A'ya özgü olduğunu, (3,4)' ün yaygın olduğunu ve (5,6) 'nın B ye özgü olduğunu unutmayın.
Eşdeğer sorgulardan herhangi birini kullanan bir iç birleşim, iki tablonun, yani ortak noktalarına sahip oldukları iki sıranın kesişimini verir.
Sol dış birleştirme, A'daki tüm satırları artı B'deki ortak satırları verir.
Sağ dış birleşim, B'deki tüm satırları ve A'daki ortak satırları verir.
Tam dış birleştirme
Tam bir dış birleşim size A ve B'nin birleşimini, yani A'daki tüm satırları ve B'deki tüm satırları verir. Eğer A'daki bir şey B'de karşılık gelen bir verime sahip değilse, B kısmı null olur ve versa.
Mark Harrison2008-09-012008-09-01 22:59:34Z
Venn şemaları gerçekten benim için yapmaz.
Örneğin, bir çapraz birleştirme ile bir iç birleştirme arasında herhangi bir ayrım göstermezler, örneğin veya daha genel olarak farklı birleştirme tahmini tipleri arasında herhangi bir ayrım göstermezler veya nasıl çalışacaklarına dair bir çerçeve sağlarlar.
Yan on tümce tümce tümce karşı yan tümcesini değerlendirmek true
(Sadece dış birleştirmeler için) 2. adımda kaybolan tüm dış sıralara geri ekleyin.
(Not: pratikte sorgu optimizatörü, sorguyu yürütmenin yukarıdaki tamamen mantıksal tanımlamasından daha etkili yollar bulabilir, ancak nihai sonuç aynı olmalı)
Tam bir dış birleştirmenin animasyonlu bir versiyonuyla başlayacağım . Daha fazla açıklama izler.
İlk önce bir CROSS JOIN (AKA Cartesian Product) ile başlayın . Bunun bir ON cümlesi yoktur ve iki satırdaki her satır birleşimini döndürür.
SELECT A.Renk, B.BİR ÇAPRAZ BİRLEŞTİRMENİNDEN RENK B
İç ve Dış birleştirmelerin bir "ON" yan tümcesi belirtmesi var.
İç birleşim. Çapraz birleştirme sonucundaki tüm satırlar için "ON" yan tümcesinde koşulu değerlendirin. True ise birleştirilen satırı döndür. Aksi takdirde atın.
Sol dış katılma. Daha sonra sol tablodaki satırlar için iç birleştirmeyle aynıdır; bunlar, sağ tablo sütunları için NULL değerleriyle çıktısı olan hiçbir şeyle eşleşmez.
Sağ Dış Katılma. Daha sonra sağ tablodaki satırlar için iç birleştirmeyle aynıdır; soldaki tablo sütunları için NULL değerleriyle bunları çıkaran hiçbir şeyle eşleşmez.
Tam Dış Katılma. İç birleştirmeyle aynı şekilde, sol dış birleştirmede olduğu gibi eşleşmemiş sol sıraları ve sağ dış birleştirmeye göre sağ eşleşmeyen satırları koru.
SELECT A.Colour, B. INNER JOİN B ÜZERİNDEN BİR RENKLİ ALAN A.Renk = B.Renk
Yukarıdaki klasik equi birleşimidir.
SELECT A.Colour, B. INNER JOIN B ÜZERİNDEKİ BİR RENKLİ ALAN A.COLUR DEĞİL ('Yeşil', 'Mavi')
İç birleşme koşulu mutlaka bir eşitlik koşulu olmak zorunda değildir ve tabloların her ikisinden de (veya hatta her ikisinden) referans sütunlarına ihtiyaç duymaz. A.Colour NOT IN ('Green','Blue') Çapraz birleştirme dönüşlerinin her bir satırında değerlendirme yapılması.
SELECT A.Colour, B. INNER JOİN B ÜZERİNDEN RENKLENMEK 1 = 1
SELECT A.Colour, B. A SOL OUTER'DEN DOĞRU BİRLEŞTİRMEDEN B JOUR A.Colour = B.Colour
Dış birleştirmeler, soldaki tablodan bir satır (sol birleştirme için), sağdaki tablodan hiçbir satır ile birleşmemesi ve sonuçta elde edilen NULL değerlerle korunmuş olması haricinde, iç birleştirmelerle aynı şekilde mantıksal olarak değerlendirilir. sağ sütunlar.
SELECT A.Colour, B. A SOL OUTER'DEN SONRA BİRLEŞTİRDİĞİNİZDE B B. A.
Bu sadece önceki sonucu yalnızca satırları döndürecek şekilde kısıtlar B.Colour IS NULL . Bu özel durumda, bunlar sağ masada eşleşmediğinden korunmuş olan satırlar olacaktır ve sorgu, tabloda eşleşmeyen tek kırmızı sırayı döndürür B . Bu, anti yarı birleşme olarak bilinir.
IS NULL Test için null yapılamayan veya birleştirme koşulunun NULL , bu kalıbın doğru çalışması için değerlerin dışlanmasını sağladığı ve bunun için NULL değere sahip olan satırları geri getirmekten kaçınmasını sağlayan bir sütun seçmek önemlidir. eşleşmeyen satırlara ek olarak sütun.
SELECT A.Colour, B. DOĞRU BİR OUTER'DEN RENKLİ BİRLEŞTİRME
Sağ dış birleştirmeler, sağ tablodaki eşleşen olmayan sıraları korudukları ve sol sütunları boş bırakmadıkları için sol dış bağlantılara benzer şekilde hareket eder.
SELECT A.Colour, B. TAM OUTER DIŞINDAN RENKLI BİRLEŞTİRMEYE BAĞLI A.Colour = B.Renk
SELECT A.Colour, B. TAM OUTER DIŞINDAN RENKLI BİRLEŞTİRME B ON 1 = 0
Çapraz bağlantıdaki hiçbir satır 1=0 yüklem ile eşleşmiyor. Her iki taraftan da bütün sıralar, diğer taraftaki tablodan sütunlarda NULL olan normal dış birleştirme kuralları kullanılarak korunur.
KOLEJİ SEÇ (A.Renk, B.Renk) OLARAK TAM DIŞ ORTAMDAN RENK OLARAK Renk 1 = 0
Yukarıdaki sorguya yapılan küçük bir değişiklikle, biri UNION ALL iki tablodan birini simüle edebilir .
SELECT A.Colour, B. A SOL OUTER'DEN SONRA BİRLEŞTİRDİĞİNDE BÜLTEN A.Brenci = B.RENER NEREDE
Not o WHERE fıkra (varsa) mantıksal olarak katıldıktan sonra çalışır. Sık karşılaşılan bir hata, sol dış birleştirme gerçekleştirmektir ve ardından sağ tablodaki eşleşmeyen satırları dışlayan biten bir koşulu olan bir WHERE yan tümcesi içermelidir. Yukarıdakiler dış birleştirme işlemini gerçekleştirir ...
... Ve sonra "Where" yan tümcesi çalışır. NULL= 'Green' doğru olarak değerlendirilmez, bu nedenle dış birleşim tarafından korunan sıra, (bir mavi ile birlikte) atılır, böylece birleşik bir iç kısma dönüşür.
Amaç, yalnızca B'nin Renkleri Yeşil olduğu satırlar ve A'nın tüm satırları ne olursa olsun, doğru sözdizimi olacaktır.
SELECT A.Colour, B. A SOL OUTER'DEN SONRA BİRLEŞTİRMEYE BİNİ A.Colour = B.Renk ve B.Renk = 'Yeşil'
SQLFiddle.com'da canlı yayın yapan bu örneklere bakın .
Martin Smith2014-12-132014-12-13 11:58:59Z
Birleşimler , verileri iki tablodan birleştirmek için kullanılır ve sonuçta yeni bir geçici tablo olur. Birleşimler, bir birleştirme gerçekleştirmek için kullanılacak koşulu belirten bir yüklem denilen bir şey temelinde gerçekleştirilir. Bir iç birleşim ve bir dış birleşim arasındaki fark, bir iç birleşimin sadece birleşim belirtisine dayanarak gerçekten eşleşen satırları döndürmesidir. Örneğin; Çalışan ve Konum tablosunu ele alalım:
İç Birleştirme: - İç birleştirme, birleştirme öngörüsünü temel alan iki tablonun sütun öğelerini ( Çalışan ve Konum )birleştirerek yeni bir sonuç tablosu oluşturur. Sorgu, birleştirme-öngörüsünü sağlayan tüm satır çiftlerini bulmak içinher bir Çalışan sırasını her bir Konum satırı ilekarşılaştırır. Join-yordamı NULL olmayan değerlerin eşleştirilmesiyle sağlandığında, her bir Çalışan ve Konum satırı çifti için sütun değerleribir sonuç satırında birleştirilir. İşte bir iç katılım için SQL'in neye benzeyeceği:
Şimdi, işte o SQL çalıştırmanın sonucu şöyle olurdu:
Dış Birleştirme: - Bir dış birleşim, birleştirilmiş iki tablodaki her bir kaydın eşleşen bir kayda sahip olmasını gerektirmez. Birleştirilen tablo, her bir kaydı tutar - başka eşleşen kayıt olmasa bile. Dış bağlantılar, hangi masanın sıralarının tutulduğuna bağlı olarak (sol veya sağ) sol dış birleşmelere ve sağ dış birleşimlere bölünür.
Sol Dış Katılma: - Tablolar için sol dış birleştirmenin (veya yalnızca sol birleştirmenin) sonucu Çalışan ve Konum , katılım koşulu eşleşen bir kayıt bulamazsa,her zaman "sol" tablonun ( Çalışan )tüm kayıtlarını içerir. "sağ" tablo ( Konum ). Sol dış birleşim için SQL'nin yukarıdaki tabloları kullanarak nasıl göründüğünü aşağıda bulabilirsiniz:
Sağ Dış Birleştirme: - Sağ dış birleştirme (veya sağ birleştirme), ters çevrilmiş tabloların işlenmesi haricinde, bir sol dış birleşmeyi yakından andırır. "Sağ" tablodaki ( Konum )her satıren az bir kez birleştirilmiş tabloda görünecektir. "Sol" tablosu (hiçbir eşleştirme satır halinde Çalışan ) var, BOŞ gelen sütunlarda görünür Çalışan eşleşme sahip olan kayıtlar için yer . SQL böyle görünüyor:
Yukarıdaki tabloları kullanarak, bir sağ dış birleşmenin sonuç kümesinin nasıl göründüğünü gösterebiliriz:
Tam Dış Katılma : - Tam Dış Katılma veya Tam Katılma, bir birleşme sonuçlarına eşleşen olmayan satırları dahil ederek eşleşmeyen bilgileri tutmaktır, tam bir dış birleştirmeyi kullanın. Diğer tablonun uygun bir değeri olup olmadığına bakılmaksızın her iki tablodaki tüm satırları içerir.
Yalnızca eşleşen satırları al, yani A intersect B .
İlk tablodaki tüm kayıtları ve ikinci tablodaki birleştirilen tuşlarla eşleşen tüm kayıtları seçin.
İkinci tablodaki tüm kayıtları ve ilk tablodaki birleştirilen tuşlarla eşleşen tüm kayıtları seçin.
İç ve dış birleştirmeler SQL örnekleri ve Join bloğu
Tushar Gupta - curioustushar2014-01-272014-01-27 12:16:05Z
Bir iç birleşim eşleşti satırları yalnızca almak.
Bir dış birleşim birleştirilmiş tabloları bir tablodan diğer tüm tablodaki tüm satırları alırken ... sonuç hangisini kullandığınıza bağlıdır:
Sol : Sağ tablodaki eşleşen satırlar ve soldaki tablodaki tüm satırlar
Tam : Tüm tablolardaki tüm satırlar. Bir eşleşme olup olmaması önemli değil
Bir (sol) dış birleşim, birleşimin diğer (sağ) tarafında eşleşen bir satır olmasa bile, sol taraftaki her kayıt için satırlar gösterir. Eşleşen bir satır yoksa, diğer (sağ) taraf için sütunlar NULL gösterir.
1800 INFORMATION2008-09-012008-09-01 22:38:43Z
İç birleştirmeler, birleştirilen tabloda ilgili kimliğe sahip bir kaydın bulunmasını gerektirir.
Dış bağlantılar, sağ taraf için hiçbir şey bulunmasa bile, sol taraf için kayıtlar döndürür.
Örneğin, bir Siparişler ve bir OrderDetails tablosu var. Bir "OrderID" ile ilişkilidirler.
sadece OrderDetails tablosunda da bir şeyler içeren Emirleri iade edecektir.
OUTER LEFT JOIN olarak değiştirirseniz
Bunu, nerede bir cümle ekleyerek olası bir artık sipariş belirten hiçbir OrderDetails içermeyen Emirleri bulmak için kullanabilirsiniz WHERE OrderDetails.OrderID IS NULL .
Brian Boatright2008-09-012008-09-01 22:47:39Z
İç birleştirme -> SADECE ana ve alt tablolardan ortak kayıtlar alın. Ana tablonun birincil anahtarı Çocuk tablosundaki Yabancı anahtarla eşleşir.
Sol katılmak ->
Sağ birleşim : Sol birleşmenin tam tersi. Masanın adını LEFT JOIN'e sağ tarafta Sağa birleştirme'de koyun, LEFT JOIN ile aynı çıktıyı elde edin.
Dış birleştirme : Tüm kayıtları Her iki tabloda da göster No matter what . Sol tablodaki kayıtlar, Birincil, Forieign anahtarına bağlı olarak sağ tabloyla eşleşmiyorsa, birleştirme sonucu NULL değerini kullanın.
Burada çalışanlar masası, Master masası, phone_numbers_employees, çocuk masasıdır (çocuk masasını emp_id birbirine bağlayan yabancı anahtar olarak bulunur employee.id .)
SADECE 2 tablonun kayıtlarını alın . Çalışan tablosunun birincil anahtarı (kimliği), Çocuk masasının yabancı anahtarı ile eşleşiyor . Phone_numbers_employees (emp_id) .
Yani sorgu şöyle olurdu:
Burada, yukarıda açıklandığı gibi sadece birincil anahtar = yabancı anahtardaki eşleşen satırları alın. Birincil anahtardaki eşleşmeyen satırlar = yabancı anahtar birleştirme sonucu atlanır.
Sol birleşimler :
Sol birleşim, sağ masada eşleşen bir satır olup olmadığına bakılmaksızın, sol tablonun tüm satırlarını korur.
Dış birleştirmeler :
Diyagramatik olarak görünüyor:
Bu, her türlü katılım için iyi bir şematik açıklamadır.
Raghu K Nair2016-03-212016-03-21 22:57:39Z
INNER JOIN Tüm satırları eşleşmenin olduğu her iki tablodan döndürmek için kullanırsınız . Yani sonuçta ortaya çıkan tabloda bütün satır ve sütunların değerleri olacaktır.
Sonuçta OUTER JOIN ortaya çıkan tabloda boş sütunlar bulunabilir. Dış birleştirme LEFT veya olabilir RIGHT .
LEFT OUTER JOIN İkinci tabloda eşleşme olmasa bile ilk satırdaki tüm satırları döndürür.
RIGHT OUTER JOIN İlk tabloda eşleşme olmasa bile, tüm satırları ikinci tablodan döndürür.
INNER JOIN İki tablonun karşılaştırılmasında en az bir eşleşme olması gerekir. Örneğin, A ve B ile gösterilen A ve B tabloları (A kavşağı B).
LEFT OUTER JOIN ve LEFT JOIN aynı. Her iki tabloda da eşleşen tüm kayıtları ve sol tablonun tüm olanaklarını verir.
Benzer şekilde RIGHT OUTER JOIN ve RIGHT JOIN aynıdır. Her iki tabloda da eşleşen tüm kayıtları ve doğru tablonun tüm olanaklarını verir.
FULL JOIN çoğaltmanın LEFT OUTER JOIN ve RIGHT OUTER JOIN çoğaltılmasının birleşimidir .
İçinde veya SQLite yok . Ve ayrıca orada yok . RIGHT OUTER JOIN FULL OUTER JOIN
Cevabım yukarıdaki Not dayanmaktadır .
Bu tabloların tümünün verilerini şu CROSS JOIN ya da bununla birlikte , kullanabilirsiniz:
Yukarıdaki sonuçlara table1.id = table2.id istediğiniz gibi bir ilişkiye dayanarak bir filtre eklemek istediğinizde INNER JOIN :
Yukarıdaki sonuçtaki tablolardan birinin tüm satırlarına sahip olmak istediğinizde - aynı ilişkide - kullanabilirsiniz LEFT JOIN :
( DOĞRU BİRLEŞİM için sadece tabloların yerlerini değiştirin)
Sonuçlarınızda diğer tablonun tüm satırlarını görmek istediğinizde kullanabilirsiniz FULL OUTER JOIN :
İhtiyacınız olduğu gibi, ihtiyacınızı karşılayan her birini seçersiniz;).
Bir birleştirme, iki tablodaki satırları birleştiriyor. Bir iç birleşim sorguda belirttiğiniz ölçütleri temel alarak iki tabloyu eşleştirmeye çalışır ve yalnızca eşleşen satırları döndürür. Birleşimdeki ilk tablodan bir satır ikinci tablodaki iki satırla eşleşirse, sonuçlarda iki satır döndürülür. İlk tabloda ikinci satırla eşleşmeyen bir satır varsa, döndürülmez; Aynı şekilde, ikinci tabloda ilk satırda eşleşmeyen bir satır varsa, döndürülmedi.
Bir katılmak sol ikinci tablodaki satırların ilk tablodan satırları maç bulmak için girişimlerini. Bir eşleşme bulamazsa, ilk tablodaki sütunları döndürür ve ikinci tablodaki sütunları boş bırakır (boş).
Kanwar Singh2014-04-112014-04-11 09:18:07Z
Diğer cevaplarda performans ve optimize edici hakkında fazla ayrıntı göremiyorum.
Bazen sadece INNER JOIN ilişkisel olduğunu bilmek iyidir, bu da optimize edicinin oynamak için en fazla seçeneğe sahip olduğu anlamına gelir. Aynı sonucu daha hızlı tutması için birleştirme sırasını yeniden düzenleyebilir. Doktoru çoğu birleştirme modunu kullanabilir.
Genellikle INNER JOIN farklı türden bağlantılar yerine kullanmaya çalışmak iyi bir uygulamadır . (Elbette beklenen sonuç kümesini göz önüne alarak mümkünse.)
Sol dış birleşimler birleştirici midir?
Birleştirme sırası SQL'de önemli mi?
Lajos Veres2013-11-172013-11-17 12:59:46Z
INNER JOIN iki veya daha fazla masa için en tipik birleştirme. Hem ON ON anahtar anahtarında hem de forignkey ilişkisinde veri eşleşmesini döndürür.
OUTER JOIN ile aynıdır INNER JOIN , ancak NULL ResultSet'teki verileri de içerir .
LEFT JOIN = INNER JOIN + Sağdaki tabloyla eşleşmeyen sol tablonun verileri Null .
RIGHT JOIN = INNER JOIN + Sağdaki tablo ile Null eşleşmeyen veriler , soldaki tablo ile eşleşiyor.
FULL JOIN = INNER JOIN + Hem sağ hem de sol tablolardaki eşleşmemiş eşleşmemiş veriler Null .
Kendiliğinden birleştirme, bir tablo kendi içinde verilere başvuran bir tablo kendini birleştirme olarak bildiğinde, SQL'de bir anahtar kelime değildir. Kullanılması INNER JOIN ve OUTER JOIN biz öz sorguları katılmak yazabilir.
Hassas algoritması INNER JOIN , LEFT/RIGHT OUTER JOIN aşağıdaki gibidir:
İlk tablodaki her satırı alın: a
Yanındaki ikinci tablodaki tüm satırları göz önünde bulundurun: (a, b[i])
Maddeyi ON ... her çifte karşı değerlendirin : ON( a, b[i] ) = true/false?
Koşul değerlendirildiğinde true , birleştirilmiş satırı geri döndürün (a, b[i]) .
İkinci tablonun sonuna herhangi bir eşleşme olmadan ulaştığında, bu bir diğer tablonun tüm sütunlarını kullanarak Outer Join bir (sanal) çift döndürür Null : (a, Null) LEFT dış birleşim veya (Null, b) RIGHT dış birleşim için. Bu, ilk tablonun tüm satırlarının nihai sonuçlarda bulunmasını sağlamak içindir.
Not: ON maddede belirtilen koşul herhangi bir şey olabilir, Birincil Anahtarların kullanılması gerekli değildir (ve her iki tablodaki sütunlara her zaman başvurmanız gerekmez)! Örneğin:
... ON T1.title = T2.title AND T1.version < T2.version (=> bu gönderiyi örnek kullanım olarak görün: Yalnızca bir sütunda maksimum değeri olan satırları seçin )
... ON 1 = 0 (sadece örnek olarak)
Not: Sol Katıl = Sol Dış Katıl, Sağ Katıl = Sağ Dış Katıl.
Çok sevilen kırmızı gölgeli Venn şemasını eleştirdikten sonra, sadece kendi girişimi yayınlamanın adil olacağını düşündüm.
@Martin Smith'in cevabı bu grubun uzun yoldan en iyisi olsa da, her tablodaki anahtar sütunu gösteriyor, oysa ki ideal olmayan anahtar sütunları da gösterilmesi gerektiğini düşünüyorum.
Yarım saat içinde yapabileceğim en iyi şey, hala yeterli değerlerin bulunmadığını TableB ya OUTER JOIN da aslında bir birleşmeden ziyade sendikadaki anahtar değerlerin bulunmadığı gerçeğini gösterdiğini sanmıyorum :
İç Birleştirme: Her iki tablodaki eşleşen kayıtları döndürür .
Tam Dış Birleştirme: Her İki Tablodaki Eşleşmeyen Kayıtlar için boş olan her iki tablodaki eşleşen ve eşlenmemiş kayıtları döndürür .
Sol Dış Birleştirme: Eşleşen ve eşleşmeyen kayıtları yalnızca Sol Taraftaki tablodan döndürür .
Sağ Dış Birleştirme: Eşleşen ve eşleşmeyen kayıtları yalnızca Sağ Taraftaki tablodan döndürür .
Eşleşti + Sol Eşleşti + Sağ Eşleşti = Tam Dış Katılma
Eşleşti + Sola Eşsiz = Sol Dış Birleştirme
Eşleşti + Sağ Eşleşti = Sağ Dış Birleştirme
Akshay Khale2016-04-282016-04-28 09:10:48Z
1. INNER JOIN VEYA EQUI JOIN: Her iki tabloda da yalnızca koşulla eşleşen sonuç kümesini döndürür.
3. LEFT JOIN: Soldaki tablodaki tüm değerlerin sonucunu ve yalnızca sağ tablodaki koşulla eşleşen satırları döndürür.
4. RIGHT JOIN: Tüm değerlerin sonucunu sağ tablodan ve yalnızca sol tablodaki koşulla eşleşen satırlardan döndürür.
5. FULL JOIN: Tam Birleşme ve Tam Dış Birleştirme aynıdır.
1. İç Katılma: Katılma olarak da adlandırılır. Hem sol tabloda hem de sağ tabloda bulunan satırları yalnızca bir eşleşme varsa döndürür . Aksi takdirde, sıfır kayıt döndürür.
2. Tam Dış Katılma: Ayrıca Tam Katılma olarak da adlandırılır. Sol tabloda ve sağ tabloda bulunan tüm satırları döndürür .
3. Sol Dış birleştirme: Veya yalnızca Sol Birleştirme olarak adlandırılır. Sol tabloda bulunan tüm satırları ve sağ tablodaki eşleşen satırları (varsa) döndürür.
4. Sağ Dış Katılma: Sağ Katılma olarak da adlandırılır. Sol tablodan (varsa) eşleşen satırları ve Sağ tablodaki tüm satırları döndürür.
Daha hızlı çalıştırır.
İç birleştirme - Eşdeğer sorgulardan birini kullanan bir iç birleşim , iki tablonun kesişimini sağlar; yani ortak oldukları iki sıra.
Sol dış birleştirme - Bir dış bıraktı katılmak B'de A'da tüm satırları, artı herhangi bir ortak satır verecek
Tam dış birleşim - Bir tam dış birleşim A'da şey B'de karşılık gelen veriyi yoksa size yani A'da tüm satırlar ve B'de tüm satırları A ve B birliği verecek, daha sonra B kısmıdır null, ve tersi
left join on (aka left outer join on ) döndürür inner join on satırlar union all boş değerlere uzatılan eşsiz sol tablo satırlarını.
right join (on aka right outer join on ) döner inner join on satırlar union all eşsiz sağ tablo satırları boş değerlere uzatılabilir.
full join on (aka full outer join on ) döndürür inner join on satırlar union all boş değerlere uzatılan eşsiz sol tablo satırları union all boş değerlere uzatılan eşsiz sağ tablo satırları.
(SQL Standard 2006 SQL / Foundation 7.7 Sözdizimi Kuralları 1, Genel Kurallar 1 b, 3 c & d, 5 b.)
Öyleyse outer join altta yatan şeyin ne olduğunu öğrenene kadar yapma inner join .
Öğrenin Ne satırlar inner join döner .
Buradaki yorumları okuyun, pek çok karışık ve kötü cevap var.
O zaman buradaki yorumlarımı çok karışık ve zayıf cevaplar olarak okuyun.
İç derz ile dış derz arasındaki fark şöyledir:
İç birleştirme, eşleşen perdelere dayalı birleştirilmiş tabloların birleştirildiği bir oyundur, oysa dış birleştirme, hem eşleşen hem de eşleşmeyen tokayı temel alan birleştirilmiş bir tablodur.
İç birleştirme, eşleştirilmemiş satırın alınmadığı iki tablodaki eşleşen satırı birleştirirken, dış birleştirme iki tablodaki satırları birleştirir ve eşleşmeyen satırlar boş değerle doldurulur.
İç birleşme bir kesişme işlemi gibidir, oysa dış birleşme birleşme işlemi gibidir.
İç birleştirme iki tiptir, oysa dış birleştirme üç tiptir.
İç birleşme daha yavaş, dış birleşme ise iç birleşimden daha hızlıdır.
Çoğunlukla sql sorgularında sadece JOIN olarak yazılır . Tablolar arasında yalnızca eşleşen kayıtları döndürür.
Tüm çalışanlarını ve bölüm adlarını öğrenin:
Yukarıda gördüğünüz gibi, Jose yazdırılan değildir EMP 's dept_id olarak çıktısında 6 Bölümü tablosunda bir eşleşme bulmak. Benzer şekilde, HR ve R&D satırlar yazdırılan değildir Bölümü onlar Emp tablosunda bir eşleşme bulamadık olarak masaya.
Bu nedenle, INNER JOIN veya sadece JOIN, yalnızca eşleşen satırları döndürür.
SOL YÖNDEN KATILIM :
Bu nedenle, yukarıdaki çıktıyı gözlemlerseniz, LEFT tablosundaki (Emp) tüm kayıtlar, sadece RIGHT tablosundaki eşleşen kayıtlarla yazdırılır.
HR ve dept_id'deki Emp tablosunda bir eşleşme bulamadıklarından R&D , bölüm tablosundan yazdırılmıyor .
Bu nedenle, LEFT JOIN, Sol tablodaki TÜM satırları ve yalnızca RIGHT tablosundaki eşleşen satırları döndürür.
DEMO'yu buradan da kontrol edebilirsin .
Mayank Porwal2018-11-252018-11-25 14:50:41Z
“Yok” ve “== Yok” arasındaki fark nedir
SQL Server: CROSS JOIN ve FULL OUTER JOIN arasındaki fark nedir?
Fare ve fare merkezi olayları arasındaki fark nedir?
jQuery belirli bir seçenek etiketi metni almak
T bir numaralandırmaya sınırlayan genel yöntem oluşturma
Birden Çok Sütuna Göre Grupla
JQuery'yi kullandıktan sonra :: before ve :: gibi CSS sözde elemanlarını seçme ve kullanma
Hata - IIS metatabanına erişilemiyor
Yerel bir git taahhüdünü iptal etme