PostgreSQL中相当于LEFT OUTER JOIN的'WHERE'语法

Dra*_*onZ 3 sql postgresql join relational-database

我知道在Oracle中有一种WHERE表示形式LEFT JOIN,其语法如下:

  FROM t1, t2
 WHERE t1.id = t2.id(+)
Run Code Online (Sandbox Code Playgroud)

代替:

  FROM t1 LEFT JOIN t2
    ON t1.id = t2.id
Run Code Online (Sandbox Code Playgroud)

PostgreSQL中有类似的东西吗?我搜索了文档,但是找不到这种功能。

a_h*_*ame 8

Postgres(或标准SQL)中没有此类运算符。

在Postgres中编写外部联接的唯一方法是使用ANSI显式JOIN语法:

select *
from table t1
  left join table t2 on t1.id = t2.id;
Run Code Online (Sandbox Code Playgroud)

(或者可能正好相反- 自从我上次使用Oracle 运算符以来已经很久(+)

手册中的更多详细信息:http : //www.postgresql.org/docs/current/static/queries-table-expressions.html#QUERIES-FROM

首先,您不应该(+)在Oracle中使用运算符。自9i以来,Oracle已支持ANSI联接,并且Oracle建议停止使用该(+)运算符(上述语句在Oracle中也可以正常使用)