SQL嵌套在表单中。从架构访问表

时间:2017-06-09 12:33:32

标签: sql postgresql

我有N个架构A,B,C,......在所有这个架构中,我知道有一个名为XXX的表。我想显示所有架构的所有XXX表。 问题是我不知道模式名称以及数据库中有多少模式。

select *
from ( select distinct table_schema 
       from information_schema.tables 
       where 
         table_schema not in ('pg_catalog', 'information_schema') and 
         table_schema not like 'pg_toast%' and 
         table_schema not like 'public' ).XXX

嵌套查询有效。我可以检索我的架构列表。但.XXX不起作用。

感谢您的帮助。 迭

1 个答案:

答案 0 :(得分:0)

一种可能性是使用表继承,不确定这是否适合您。

如果我有两张这样的表:

CREATE TABLE s1.xxx(id integer PRIMARY KEY, val text NOT NULL);
INSERT INTO s1.xxx VALUES (1, 'one');

CREATE TABLE s2.xxx(id integer PRIMARY KEY, val text NOT NULL);
INSERT INTO s2.xxx VALUES (1, 'two');

我可以创建一个新表并使两个表成为新表的子项:

CREATE TABLE xxx(id integer PRIMARY KEY, val text NOT NULL);

ALTER TABLE s1.xxx INHERIT xxx;
ALTER TABLE s2.xxx INHERIT xxx;

然后我可以从新表中SELECT

SELECT * FROM xxx;

┌────┬─────┐
│ id │ val │
├────┼─────┤
│  1 │ one │
│  1 │ two │
└────┴─────┘
(2 rows)