【IT168 服务器学院】PostgreSQL 采用标准的 SQL 语法支持外连接。这里是两个例子:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
或
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
这两个等价的查询在 t1.col 和 t2.col 上做连接,并且返饣?t1 中所有未连接的行(那些在 t2 中没有匹配的行)。右[外]连接(RIGHT OUTER JOIN)将返回 t2 中未连接的行。完全外连接(FULL OUTER JOIN)将返回 t1 和 t2 中未连接的行。关键字 OUTER 在左[外]连接、右[外]连接和完全[外]连接中是可选的,普通连接被成为内连接(INNER JOIN)。
在此前的版本中,外连接可以用 UNION 和 NOT IN 来模拟。例如,下面的例子在表 tab1 和 tab2 之间做外连接:
SELECT tab1.col1, tab2.col2
FROM tab1, tab2
WHERE tab1.col1 = tab2.col1
UNION ALL
SELECT tab1.col1, NULL
FROM tab1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
ORDER BY col1