如何执行返回多行/多列的CTE查询(&Q)? [英] How to "PERFORM" a CTE query returning multiple rows/columns?

本文介绍了如何执行返回多行/多列的CTE查询(&Q)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为此问题的后续问题:

我尝试:

perform (with test_as_cte as(select * from myTable) select * from test_as_cte);

但出现以下错误:

SQL Error [42601]: ERROR: subquery must return only one column
Where: PL/pgSQL function inline_code_block line 9 at PERFORM

如果我将上述代码中的*替换为myCol,则不会出现错误。

但是,我需要使用CTE执行实际的性能测试并返回多个列。

推荐答案

括号中的WITH查询被当作子选择处理。只要它返回一个单个值(一行中的一列),它就可以很好地按照您的方式运行。否则,您必须将其当作子查询并像这样调用它(在PL/pgSQL代码块中!):

PERFORM * FROM (with test_as_cte as (select * from b2) select * from test_as_cte t) sub;

或直接:

PERFORM FROM (<any SELECT query>) sub;

The manual:

PERFORMquery

这将执行query并丢弃结果。编写查询 与编写SQLSELECT命令的方式相同,但将 带有PERFORM的初始关键字SELECT。对于WITH查询,请使用 PERFORM,然后将查询放在括号中。(在本例中, 查询只能返回一行。)

我认为这一点可以更清楚。我将为文档提供修复建议。

这篇关于如何执行返回多行/多列的CTE查询(&Q)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆