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

如何将PostgreSQL的INSERT与SELECT语句合并为单条SQL语句?

把INSERT和全量SELECT合并成单条SQL的方法

当然可以实现,不同数据库有不同的处理方式,下面是几种主流数据库的具体方案:

MySQL/MariaDB

最直接的方式就是把两条语句用分号隔开,只要你的客户端允许执行多语句就行:

INSERT INTO testing_sql(name, age) VALUES ('Jim', '28');
SELECT * FROM testing_sql;

如果场景不支持多语句,那就写个存储过程封装逻辑:

DELIMITER //
CREATE PROCEDURE InsertThenGetAll()
BEGIN
    INSERT INTO testing_sql(name, age) VALUES ('Jim', '28');
    SELECT * FROM testing_sql;
END //
DELIMITER ;

-- 调用时执行这条
CALL InsertThenGetAll();

PostgreSQL

用WITH子句先执行插入,接着直接查询全表:

WITH inserted_row AS (
    INSERT INTO testing_sql(name, age) VALUES ('Jim', '28')
    RETURNING * -- 这行可选,仅返回刚插入的记录,不影响主查询
)
SELECT * FROM testing_sql;

SQL Server

同样支持分号分隔的多语句:

INSERT INTO testing_sql(name, age) VALUES ('Jim', '28');
SELECT * FROM testing_sql;

要是想用单语句块实现,也可以用临时表过渡:

DECLARE @temp TABLE (dummy_col INT);
INSERT INTO testing_sql(name, age)
OUTPUT inserted.id INTO @temp
VALUES ('Jim', '28');
SELECT * FROM testing_sql;

简单来说,大多数场景下,直接把两条语句用分号分隔就能满足需求;如果严格要求单语句结构,就用对应数据库的特定语法来封装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:05:56