gpt4 book ai didi

postgresql - PostgreSQL 中的公用表表达式

转载 作者:行者123 更新时间:2023-11-29 14:22:58 25 4
gpt4 key购买 nike

我刚刚学习 CTE,我想在 WITH 子句中创建动态查询。

下面是我写的代码。

WITH name1 AS (
SELECT schema_name as my_schema
FROM public.schema_table
), name2 AS (
SELECT num_rows as my_row
FROM my_schema.row_table
)
SELECT my_row
from name2;

从 WITH 中的第一个查询给出一个数据库中存在的模式数和该模式名称返回

SELECT schema_name as my_schema 
FROM public.schema_table

我想在第二个查询中使用,因为我正在将它保存到 my_schema。

但是当我运行这个查询时,它会给我错误信息,比如 my_schema 不存在,因为我想使用 my_schema 包含的值。

你怎么做到的?

最佳答案

首先,您似乎没有在查询中的任何地方使用过 name1,所以我怀疑您可能没有完全理解 WITH

但是看起来您可能有多个名为 row_table 的表,每个表都存在于它自己的模式中,并且想要创建一个查询来让您选择从哪个模式中获取数据。

FROM my_schema.row_table
^^^^^^^^^

my_schema 不是变量,它是架构的名称。要执行您想要的操作,您将必须使用 pg_catalog 表在您需要的架构中找到关系的 oid 并以这种方式查找信息。

另一种解决方案可能是操纵搜索路径来执行您的命令:

BEGIN;
SET LOCAL SCHEMA 'my_schema';
SELECT num_rows FROM row_table; -- will use my_schema.
COMMIT;

关于postgresql - PostgreSQL 中的公用表表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com