【发布时间】:2016-03-14 11:21:51
【问题描述】:
谁能解释一下下面 SQL 中的内连接语法:
CREATE TABLE dataset AS
SELECT property.id
, amount.band
, amount."value"
FROM property
INNER JOIN (locality INNER JOIN amount ON locality.code = amount.code) ON (property.band = amount.band) AND (property.id = locality."UniqueId")
为什么表locality 是在第二个内连接之前定义的?我从来没有遇到过这么奇怪的语法。
是否有更清晰的方法来纠正相同的查询,以便人们可以轻松理解发生了什么?
【问题讨论】:
-
这种语法不是 Postgres 特有的。 SQL 标准允许这样做,我在 SQL Server 中也看到了这一点——尽管我从来不理解以这种方式进行连接的好处。
-
该语法已从 SQL-2003 或 SQL-2008 中的 ANSI SQL 标准中删除。 BTW,value是保留字,需要用“value”分隔。
-
... INNER JOIN (SELECT * FROM locality INNER JOIN ...
标签: sql postgresql inner-join