当前位置: 首页 > 知识库问答 >
问题:

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

公孙辰龙
2023-03-14

我想选择一组行并将它们返回给客户端,但我也想将结果集中的主键(整数id)插入到临时表中,以便在同一事务的稍后连接中使用。

这适用于同步,其中后续查询往往涉及对早期查询结果的联接。

最有效的方法是什么?

我不愿执行两次查询,尽管如果将其添加到查询缓存中可能会很快。另一种选择是将整个结果集存储到临时表中,然后从临时表中进行选择。这似乎也很浪费(我只需要临时表中的整数id。)如果有一个SELECT INTO TEMP也返回结果,我会很高兴。

目前使用的技术是在客户端构造一个整数 ID 数组,并在具有 IN 的后续查询中使用它。我希望能有更有效率的东西。

我猜它可以通过存储过程来完成吗?但是,没有这一点,还有办法吗?

共有1个答案

山乐生
2023-03-14

我认为你可以用Postgres特性来实现这一点,该特性允许在cte中修改数据。使用这个特性的更典型的原因是,比方说,删除表中的记录,然后将它们插入到日志表中。然而,它可以适应这一目的。这里有一个可能的方法(我手头没有Postgres来测试这个):

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

通常,在数据修改查询中使用<code>returning

 类似资料:
  • 问题内容: 如何在PostgreSQL中使用select into创建临时表。例如在SQL中 问题答案: 您可以尝试使用“将 表另存为” 命令,如下所示: 从文档中: 该命令在功能上类似于SELECT INTO ,但是它是首选的,因为它不太可能与SELECT INTO语法的其他用法混淆。此外,CREATE TABLE AS提供了SELECT INTO提供的功能的超集。 CREATE TABLE A

  • 问题内容: CREATE TABLE logistics ( id int primary key, campaign VARCHAR(255), event_type VARCHAR (255), date_offered VARCHAR (255), date_ordered DATE, date_delivered DATE, date_recorded DATE, date_complet

  • 我有一段代码,其中一个接口有一个可选的返回方法,实现它的一些类返回一些东西,其他的没有。 在努力拥抱这个辉煌的“空杀器”的过程中,下面是我尝试过的: 附注。如果(X!=null)不能做,Optional有没有真正的用处?

  • 我在过去使用过JSoup并能够将XPath转换为选择器,但是在一个已经改变的站点上,我无法获得这个表的结果。 Firefox为表 两个都不起作用。即使在Try JSoup链接 第一个第n个子表本身返回NULL。 你知道这个页面有什么特别之处吗? 我将用户代理字符串设置为

  • 我希望PostgreSQL将查询结果作为一个JSON数组返回。给定 我想要类似于

  • 问题内容: 我要做的是从Navigator数据库表中获取用户订购历史记录。我们有一个将网站表中的订单放入导航器表中的过程(因为需要对导航表进行格式化)。 我想查询网站表以使用其用户ID从登录用户获取订单: (这将返回多个订单ID) 是服务器,是数据库。 返回的OrderID的格式类似于,等。我想将它们插入到一个临时表中,例如:具有一个Z和足够的前导0以击中该数字的7位数字。 如何修改select语