从三个不同的表中插入

insert into from three different tables

我正在尝试将来自三个不同 table 的数据插入一个 table 中。 我怎样才能用一个命令而不是三个 'insert into' 命令来完成?

drop table osm_street;
CREATE TABLE osm_street 
( 
Postleitzahl text,
Ort text,
Strasse  text,
Hausnummer text
);
insert into osm_street (Postleitzahl, Ort, Strasse, Hausnummer)
select "addr:postcode","addr:city","addr:street", "addr:housenumber"
from planet_osm_polygon;

    insert into osm_street (Postleitzahl, Ort, Strasse, Hausnummer)
    select "addr:postcode","addr:city","addr:street", "addr:housenumber"
    from planet_osm_point;

    insert into osm_street (Postleitzahl, Ort, Strasse)
    select plz99,"addr:city",line.name
    from planet_osm_line as line , post_pl
    where ST_Intersects(ST_SetSRID(post_pl.geom, 4326), `ST_Transform(way,4326));`

如果表中各列的数据类型相同,则可以使用以下方式

drop table t if exists;
create table t(id int);
insert into t(select 2 union all select 3 union all select 5);

DEMO

所以你的插入语句应该是

  INSERT INTO osm_street (
        SELECT "addr:postcode"
        ,"addr:city"
        ,"addr:street"
        ,"addr:housenumber" FROM planet_osm_point

    UNION ALL

        SELECT "addr:postcode"
        ,"addr:city"
        ,"addr:street"
        ,"addr:housenumber" FROM planet_osm_polygon

    UNION ALL

        SELECT plz99
        ,"addr:city"
        ,line.NAME,'' FROM planet_osm_line AS line
        ,post_pl WHERE ST_Intersects(ST_SetSRID(post_pl.geom, 4326), `ST_Transform(way, 4326))
        )