You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何从子查询批量将数据插入另一表?

批量插入PostgreSQL表的简单解决方案

嗨,其实你完全不用折腾存储过程来实现这个需求,PostgreSQL本身就提供了简洁高效的批量插入语法,而且它早就支持存储过程了(从11版本开始正式引入PROCEDURE类型,更早版本也可以用函数实现类似逻辑),不过这个场景真的没必要用到存储过程~

首先纠正你之前写的SQL错误:你用了INSERT ... VALUES(SELECT ...)的写法,这不符合PostgreSQL的语法规范。要实现批量插入,直接用INSERT ... SELECT结构就可以了,不需要VALUES关键字。

基础批量插入语句

如果只是要把beta表中所有的school_name批量插入到alpha表,直接执行这条SQL就行:

INSERT INTO alpha (school_name)
SELECT school_name FROM beta;
  • 如果你alpha表的id字段是自增类型(比如serial或者GENERATED AS IDENTITY),PostgreSQL会自动为每一条插入的记录生成对应的id值,不需要你手动指定。

去重插入(可选)

如果beta表中存在重复的school_name,你不想把重复值插入到alpha表,可以加上DISTINCT关键字去重:

INSERT INTO alpha (school_name)
SELECT DISTINCT school_name FROM beta;

关于PostgreSQL存储过程的补充

你之前误以为PostgreSQL不支持存储过程,其实从PostgreSQL 11开始就正式支持了,用CREATE PROCEDURE语句创建。不过对于这种简单的批量插入场景,单条INSERT ... SELECT语句已经足够高效,完全不需要额外写存储过程来实现。

内容的提问来源于stack exchange,提问作者user8910784

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:07