【发布时间】:2015-04-11 19:25:33
【问题描述】:
我有一个名为schemas 的表,它有:
- unique_id (varchar) - 包含表名
- 数据(文本)
schemas 行上的每个unique_id 都有一个具有相似列的表,例如:users(id,data)、holidays(id,data)等。
是否可以不一一输入就从这些表中查询?
CREATE TABLE schemas (
unique_id VARCHAR(32) PRIMARY KEY, // table names stored here
data TEXT
);
INSERT INTO schemas VALUES('users','foo'),('holidays','bar');
-- not just users and holidays, there are many more..
CREATE TABLE users (
id BIGSERIAL,
data TEXT
);
INSERT INTO users(data) VALUES('user1'),('user2');
CREATE TABLE holidays (
id BIGSERIAL,
data TEXT
);
INSERT INTO holidays(data) VALUES('hol1'),('hol2');
-- and so on, if a record added to the schemas,
-- a new table created with unique_id name
是否可以在没有PL/* 的情况下执行单个查询,结果可能如下:
schema_unique_id | schema_data | table_data
users | foo | user1
users | foo | user2
holidays | bar | hol1
holidays | bar | hol2
【问题讨论】:
-
是的,有可能。但是:如果您的表名或列名是变量,您将需要动态 SQL。 (这至少意味着plpgsql)
-
如果没有某种非 SQL 编程(无论是 PL/* 还是与数据库对话的程序),就无法动态生成 SQL。
标签: sql postgresql