我正在尝试从三个不同的表中将数据插入一个表中。 我如何在一个命令中完成,而不是在三个命令中插入'命令?
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));`
答案 0 :(得分:1)
如果表中每列的数据类型相同,则可以使用以下方式
drop table t if exists;
create table t(id int);
insert into t(select 2 union all select 3 union all select 5);
所以你的插入语句应该是
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))
)