在下面的查询中,为什么我们使用As foo (geom)
而不是As geom
? foo()
做了什么?
SQL查询
SELECT ST_SRID(geom) AS srid, ST_SRID(ST_SetSRID(geom, 4326)) as srid_new
FROM (
VALUES (
ST_GeomFromText('POLYGON((70 20, 71 21, 71 19, 70 20))', 4269)),
(ST_Point(1,2)
)
) As foo (geom);
使用As geom
会出错:
ERROR: function st_srid(record) does not exist
LINE 1: SELECT ST_SRID(geom) AS srid, ST_SRID(ST_SetSRID(geom, 4326)...
答案 0 :(得分:3)
As foo
是子查询的别名,附加到它的(geom)
是其中的列名。 SQL需要每个子查询的别名。在manual in the chapter Subqueries。
这个地方使用的VALUES
表达式也是如此。我引用the manual here:
从语法上讲,VALUES后跟表达式列表被视为等效于:
SELECT select_list FROM table_expression