2012-07-31 9 views
16

He visto una consulta usando un LEFT JOIN en comparación con un INNER o .¿Qué es una UNIÓN IZQUIERDA en PostgreSQL

¿Qué es un LEFT JOIN exactamente?

+2

Una explicación más gráfico: [Visual-Representación-de-SQL-une] (http://www.codeproject.com/Articles/33052/Visual -Representation-of-SQL-Joins) – doctore

+0

Todos los tipos JOIN de PostgreSQL se explican [en el manual] (http://www.postgresql.org/docs/current/interactive/queries-table-expressions.html#QUERIES-JOIN) incluyendo ejemplos. Básicamente, la palabra clave 'OUTER' es opcional para las combinaciones' LEFT', 'RIGHT' y' FULL'. –

Respuesta

33

Donde inner join devuelve solo las entradas que coinciden en ambas tablas, un left join toma todas las entradas de la primera tabla y las que coincidan en la segunda tabla. A right join es el reverso de una left join (es decir: todos de la segunda tabla)

Así que si TableA es

A B 
1 a 
2 b 
3 c 

y TableB es

A B 
1 d 
2 e 

Entonces Select * from TableA inner join TableB on TableA.A = TableB.A rendimientos

1 a 1 d 
2 b 2 e 

Y Select * from TableA left join TableB on TableA.A = TableB.A devuelve

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

Creo que los resultados no son correctos. La primera consulta debería dar 1 a 1 d/2b 2 e La segunda consulta debería dar: 1 a 1 d/2b 2 e/3 c NULL NULL. –

+0

@RolandBouman Sí, deberían :) – podiluska

8

Es lo mismo que IZQUIERDA EXTERIOR (El exterior está implícito porque un INNER JOIN requiere coincidencia bilateral por lo que un LEFT INNER JOIN no tendría ningún sentido). Lo mismo se aplica para RIGHT JOIN y FULL JOIN estos son equivalentes a RIGHT OUTER JOIN y FULL OUTER JOIN respectivamente

Cuestiones relacionadas