|
|
|
|
@ -948,7 +948,8 @@ SELECT * |
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
|
|
|
|
|
@ -956,11 +957,12 @@ SELECT * |
|
|
|
|
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 |
|
|
|
|
|