我有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不能工作。
谢谢你的帮助。迭戈
发布于 2017-06-09 22:28:33
一种可能是使用表继承,但不确定这是否适用于您。
如果我有两个这样的表:
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)
https://stackoverflow.com/questions/44457986
复制相似问题