如何将JOIN连接查询结果存入同一Schema下的新表
实现方案
你可以直接使用CREATE TABLE ... AS SELECT(简称CTAS)语法实现需求,从语句中的ILIKE操作符可判断你使用的是PostgreSQL,该语法会自动根据查询返回的字段类型、字段名创建对应结构的新表,无需提前手动定义表结构。
要将结果存入和原表相同的ghana schema下,直接执行以下语句即可,示例中新表命名为census_with_area,你可以根据需求替换成自定义表名:
CREATE TABLE ghana.census_with_area AS SELECT census2010.district, census2010.total, census2010.male, census2010.female, census2010.region, districts.area FROM ghana.census2010 LEFT JOIN ghana.districts ON census2010.region ILIKE districts.region;
注意事项
- 新表名称不能和
ghanaschema下的已有表重名,否则语句会直接报错 - CTAS语法不会自动继承原表的主键、索引、约束规则,如果需要给新表加主键、索引,等表创建完成后单独执行对应DDL语句即可
- 如果你要写入的目标表已经存在,不能使用CTAS语法,需要改用
INSERT INTO ... SELECT写法,前提是目标表的字段数量、类型和查询返回结果完全匹配:
-- 仅用于写入已存在的目标表 INSERT INTO ghana.your_existing_target_table (district, total, male, female, region, area) SELECT census2010.district, census2010.total, census2010.male, census2010.female, census2010.region, districts.area FROM ghana.census2010 LEFT JOIN ghana.districts ON census2010.region ILIKE districts.region;
- 写入完成后可以执行
SELECT * FROM ghana.census_with_area LIMIT 10;抽样查询,验证数据是否正确存入
内容的提问来源于stack exchange,提问作者kojo justine
相关产品推荐
相关产品推荐

