sql >> データベース >  >> RDS >> PostgreSQL

Postgresを使用して複数のスキーマからすべてのレコードを選択(取得)します

    継承 @Denisが述べたように、これは非常に簡単です。 Postgres8.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フィドル。



    1. データベースを文書化する方法

    2. SQLServerで複数の行のテキストを単一のテキスト文字列に連結する方法

    3. SQLServerのAlwaysOn機能の使用方法

    4. PostgreSQLテーブルの行のカウントを高速化するにはどうすればよいですか?