使用Postgres从多个模式中选择(检索)所有记录

 mobiledu2502882543 发布于 2023-02-10 15:22

我有一个PostgreSQL数据库,其中包含一些模式,如下所示:

My_Database
 |-> Schemas
    |-> AccountA
    |-> AccountB
    |-> AccountC
    |-> AccountD
    |-> AccountE
           .
           .
           .
    |-> AccountZ

所有的模式都有一个名为表product具有称为列title.我想知道是否可以执行select语句来检索具有特定条件的所有模式的所有记录.

我到目前为止找到的唯一方法是按帐户运行查询帐户,如下所示.

SET search_path TO AccountA;

SELECT title FROM product WHERE title ILIKE '%test%';

模式是动态创建的,因此我不知道它们的名称或存在多少名称.

1 个回答
  • 随着 产业喜欢@Denis提到,这将是非常简单的.也适用于Postgres 8.4.一定要考虑这些限制.

    基本上,你会有一个主表,我想在一个主模式中:

    CREATE TABLE master.product (title text);
    

    各种模式中的所有其他表都继承自它,可能会添加更多本地列:

    CREATE TABLE a.product (product_id serial PRIMARY KEY, col2 text)
    INHERITS (master.product);
    
    CREATE TABLE b.product (product_id serial PRIMARY KEY, col2 text, col3 text)
    INHERITS (master.product);
    

    等等

    表不必共享相同的名称或架构.
    然后你可以 一举查询所有表格:

    SELECT title, tableoid::regclass::text AS source
    FROM   master.product
    WHERE  title ILIKE '%test%';
    

    tableoid::regclass::text
    这是一种方便的方式来告诉每一行的来源.细节:

    根据表值找出哪个模式

    SQL小提琴.

    2023-02-10 15:26 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有