4.24) How do I do an outer join?
- PostgreSQL 7.1 and later supports outer joins. Here are two examples:
+ PostgreSQL 7.1 and later supports outer joins using the SQL standard
+ syntax. Here are two examples:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
- These identical queries join t1.col to t2.col, and return any unjoined
- rows in t1. A RIGHT join would return unjoined rows of table t2. A
- FULL join would return unjoined rows from t1 and t2. The word OUTER is
- optional and is assumed in LEFT, RIGHT, and FULL joins. Ordinary joins
- are called INNER joins.
+ These identical queries join t1.col to t2.col, and also return any
+ unjoined rows in t1 (those with no match in t2). A RIGHT join would
+ add unjoined rows of t2. A FULL join would return the matched rows
+ plus all unjoined rows from t1 and t2. The word OUTER is optional and
+ is assumed in LEFT, RIGHT, and FULL joins. Ordinary joins are called
+ INNER joins.
In previous releases, outer joins can be simulated using UNION and NOT
IN. For example, when joining tab1 and tab2, the following query does
<H4><A name="4.24">4.24</A>) How do I do an <I>outer</I> join?<BR>
</H4>
- <P>PostgreSQL 7.1 and later supports outer joins. Here are two
- examples:</P>
+ <P>PostgreSQL 7.1 and later supports outer joins using the SQL
+ standard syntax. Here are two examples:</P>
<PRE>
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
</PRE>
- These identical queries join t1.col to t2.col, and return any
- unjoined rows in t1. A <SMALL>RIGHT</SMALL> join would return
- unjoined rows of table t2. A <SMALL>FULL</SMALL> join would return
+ These identical queries join t1.col to t2.col, and also return any
+ unjoined rows in t1 (those with no match in t2). A
+ <SMALL>RIGHT</SMALL> join would add unjoined rows of t2. A
+ <SMALL>FULL</SMALL> join would return the matched rows plus all
unjoined rows from t1 and t2. The word <SMALL>OUTER</SMALL> is
optional and is assumed in <SMALL>LEFT</SMALL>,
<SMALL>RIGHT</SMALL>, and <SMALL>FULL</SMALL> joins. Ordinary joins