从另一个表

时间:2017-02-09 14:16:04

标签: sql postgresql postgis

我的数据库中有两个表(A,B)。 现在我将创建一个新表C,它来自与表B相同的列。我想写表B中的所有数据,几何在新表C中的表A中!

类似的东西:

CREATE TABLE "C" (ID2 serial PRIMARY KEY, "geom" geometry, "id" bigint, "Name" varchar, "Feature" int, "ID2" bigint, "Code_1" varchar, "Wert_1" varchar, "Code_2" varchar, "Wert_2" int);

INSERT INTO C (geom)

SELECT ST_Intersection (A.geom, B.geom)

From A, B

结果是交叉点后面的几何图形表。 此外,我也需要其余的数据(id,name ...)

2 个答案:

答案 0 :(得分:2)

另一种选择是:

CREATE TABLE tableC (LIKE tableB INCLUDING ALL);
INSERT INTO tableC 
SELECT b.* FROM tableB b
  JOIN tableA ON NOT ST_IsEmpty(ST_Intersection (A.geom, B.geom));

这将为您创建所有索引和密钥。

答案 1 :(得分:1)

使用布尔函数ST_Intersects

 CREATE TABLE tableC AS
      SELECT tableB.*, -- (all field less geom)
             ST_Intersection (A.geom, B.geom) as geom   -- generate geom
      FROM tableA
      JOIN tableB
        ON ST_Intersects (A.geom, B.geom)   -- boolean function

之后记住你需要创建索引和约束,如PK或FK。