2012-07-31 15 views
16

Widziałem zapytanie z użyciem LEFT JOIN w przeciwieństwie do lub LEFT OUTER.Co to jest POŁĄCZENIE LEWE w PostgreSQL

Czym dokładnie jest LEFT JOIN?

+2

Bardziej graficzny wyjaśnienie: [Visual reprezentacja-of-SQL-dołącza] (http://www.codeproject.com/Articles/33052/Visual -Reprezentacja-SQL-Joins) – doctore

+0

Wszystkie typy JOIN PostgreSQL są wyjaśnione [w podręczniku] (http://www.postgresql.org/docs/current/interactive/queries-table-expressions.html#QUERIES-JOIN) w tym przykłady. Zatem słowo kluczowe "OUTER" jest opcjonalne dla połączeń "LEFT", "RIGHT" i "FULL". –

Odpowiedz

33

Tam, gdzie inner join zwraca tylko wpisy pasujące do obu tabel, left join pobiera wszystkie wpisy z pierwszej tabeli i wszystkie pasujące do drugiej tabeli. right join jest rewers left join (tj: wszystko z drugiej tabeli)

Więc jeśli TABLEA jest

A B 
1 a 
2 b 
3 c 

i TableB jest

A B 
1 d 
2 e 

Następnie Select * from TableA inner join TableB on TableA.A = TableB.A powraca

1 a 1 d 
2 b 2 e 

I Select * from TableA left join TableB on TableA.A = TableB.A zwraca

1 a 1 d 
2 b 2 e 
3 c null null 
+1

Myślę, że wyniki są nieprawidłowe. Pierwsze zapytanie powinno dać 1 a 1 d/2b 2 e Drugie zapytanie powinno dać: 1 a 1 d/2b 2 e/3 c NULL NULL. –

+0

@RolandBouman Tak, powinny :) – podiluska

8

To jest taka sama jak LEFT OUTER (zewnętrzna jest dorozumiany ponieważ INNER JOIN wymaga dwustronnej dopasowanie więc LEFT INNER JOIN nie miałoby sensu). To samo dotyczy RIGHT JOIN i FULL JOIN są równoważne RIGHT OUTER JOIN i FULL OUTER JOIN odpowiednio