如何根据查询和从 select 语句检索的行创建 table

How to create a table based on a query and rows retrieved from select statement

我想创建一个包含 XY 值的 table。 XY 的这些值将从 ST_Envelope 返回的几何中获得。 我认为它应该类似于以下内容:

create table table_name(
    select from ST_X(ST_Envelope(ST_GeomFromText(..))
    )
    

请告诉我如何创建一个 table 来填充 select-语句中的值。

使用ST_DumpPoints然后ST_XST_Y,例如:

CREATE TABLE table_name (x numeric, y numeric);

INSERT INTO table_name
SELECT ST_X(geom),ST_Y(geom) FROM (
  SELECT (ST_DumpPoints(ST_Envelope('your_geometry'))).geom
) j (geom);

或者,如果您想使用查询的确切列创建 table

CREATE TABLE table_name AS
SELECT ST_X(geom),ST_Y(geom) FROM (
  SELECT (ST_DumpPoints(ST_Envelope('your_geometry'))).geom
) j (geom);

演示:db<>fiddle