加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL返回选择结果并将它们添加到临时表中?

发布时间:2020-12-13 15:50:42 所属栏目:百科 来源:网络整理
导读:我想选择一组行并将它们返回给客户端,但我还想将结果集中的主键(整数id)插入到临时表中,以便在同一事务中的后续连接中使用. 这是用于同步的,其中后续查询倾向于涉及来自先前查询的结果的连接. 最有效的方法是什么? 我很谨慎地执行两次查询,但如果它被添加到
我想选择一组行并将它们返回给客户端,但我还想将结果集中的主键(整数id)插入到临时表中,以便在同一事务中的后续连接中使用.

这是用于同步的,其中后续查询倾向于涉及来自先前查询的结果的连接.

最有效的方法是什么?

我很谨慎地执行两次查询,但如果它被添加到查询缓存中可能会很快.另一种方法是将整个结果集存储到临时表中,然后从临时表中进行选择.这看起来也很浪费(我只需要临时表中的整数id.)如果有一个SELECT INTO TEMP也返回结果,我会很高兴.

目前使用的技术是在客户端构造一个整数id的数组,并在随后的IN查询中使用它.我希望有更高效的东西.

我猜它可以用存储过程完成?但是有没有办法呢?

解决方法

我认为你可以使用Postgres功能来实现这一功能,该功能允许在CTE中进行数据修改.例如,使用此功能的更典型的原因是删除表的记录,然后将它们插入到日志表中.但是,它可以适应这个目的.这是一种可能的方法(我手边没有Postgres来测试这个):

with q as (
      <your query here>
     ),t as (
      insert into temptable(pk)
          select pk
          from q
     )
select *
from q;

通常,您将returns子句与数据修改查询一起使用,以捕获正在修改的数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读