我有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不起作用。
感谢您的帮助。 迭
答案 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)