如何在 PostgreSQL 中执行查询的结果

特里德夫·乔杜里

我正在尝试通过连接两个表来创建视图。这两个表有几个同名的列。这给出了一个错误

SQL 错误 [42701]:错误:多次指定列“column_name”

我不能在创建视图时使用列名,因为有 30 多个列,并且在一段时间内将向两个表中添加新列。因此,我必须使用 * 来获取所有列。

现在,为了消除两个表中都存在的列,我继续这样做:

SELECT 'SELECT ' || STRING_AGG('u2.' || column_name, ', ') || ' FROM schema_name.table_name u2' 
FROM information_schema.columns 
WHERE table_name = 'table_name' 
  AND table_schema = 'schema_name' 
  AND column_name NOT IN ('column_name');

这为我提供了从schema_name.table_name没有列 column_name 的情况下选择数据的查询太棒了!!

问题:如何执行上述查询的结果?

我试过PREPARE语句,它只是执行上面的查询,而不是上面查询的结果。

此外,创建一个没有列“column_name”的临时表不是一个可行的解决方案。

穆希夫·阿里·纳瓦兹

您需要准备一个动态查询,然后EXECUTE它。它会是这样的:

DO
$do$
    BEGIN

        EXECUTE (
            SELECT CONCAT('CREATE VIEW temp_view AS SELECT ',
                          -- SELECT table1 columns here
                          (SELECT STRING_AGG('u1.' || column_name, ', ')
                           FROM information_schema.columns
                           WHERE table_name = 'table1'
                             AND table_schema = 'schema_name'
                          -- AND column_name NOT IN ('column_name')  -- not omitting for table1
                          ),
                          ', ',
                           -- SELECT table2 columns here
                          (SELECT STRING_AGG('u2.' || column_name, ', ')
                           FROM information_schema.columns
                           WHERE table_name = 'table2'
                             AND table_schema = 'schema_name'
                             AND column_name NOT IN ('column_name')),
                           -- Dynamically prepare the FROM and JOIN clauses
                          ' FROM table1 u1 JOIN table2 u2 ON u1.id = u2.table1_id'));

    END
$do$;

检查演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在PostgreSQL中多次执行查询

PostgreSQL如何追加执行查询的多个结果?

如何在PostgreSQL的函数中返回查询结果的行?

如何在PostgreSQL查询中以JSON形式获得联接结果?

如何在 postgresql 函数中执行多个查询?

如何在 jpa nativequery 中执行 postgresql json 函数查询?

如何为PostgreSQL中动态查询结果的每个元素执行一段代码?

如何在 PostgreSQL 中转换查询结果

PostgreSQL如何执行查询?

如何在 postgresql 数据库中执行此查询我在执行时遇到了麻烦

如何在PostgreSQL中执行级联舍入?

在PostgreSQL查询中,如何从联接中的字段中过滤结果

如何在Postgresql中查询XML列?

如何在 postgresql 中编写复杂的查询

如何在PostgreSQL查询中声明变量

如何在 postgresql 中构建此查询

如何在 Postgresql 中索引此查询?

如何在 PostgreSQL 中死锁 INSERT 查询

如何在 postgreSQL 中重复查询,并将结果添加到表中

如何在 PostgreSQL 中为 SELECT 查询的结果生成编号索引?

psycopg2:如何在python脚本中执行vacuum postgresql查询

如何在PostgreSQL上通过查询执行“ \ dp”?

在PostgreSQL中,如何通过字段分组查询计算结果?

如何解决postgresql中的查询未返回结果?

如何将选择查询的结果放入Postgresql中的函数

如何在 postgresql 中透视

如何在PostgreSQL中的jsonb列中查询值?

如何在分组查询中添加“总计”行(在Postgresql中)?

如何在PostgreSQL中识别函数是否正在执行