PostgreSQL:使用动态名称合并多个表

我在模式中有一组表(约100个)qgep,名称为,名称以开头vl_。它们具有相同的列(colA,colB,colC)。

我可以得到表列表:

SELECT table_name

FROM information_schema.tables

WHERE table_schema = 'qgep'

AND table_name LIKE 'vl_%'

我发现解决问题的唯一方法是生成一条SQL命令以进一步执行该命令:

SELECT

string_agg(

'SELECT '''

||table_name

||''' AS table_name, colA, colB, colC FROM qgep.'

||table_name

, ' UNION ')::text

FROM information_schema.tables

WHERE table_schema = 'qgep'

AND table_name LIKE 'vl_%'"

然后执行此SQL命令将输出我想要的内容。虽然,它不是很出色,而且很丑陋。。。

我想避免使用EXECUTE。您对寻找什么有任何建议吗?有什么我可以做的WITH ... UNION ALL吗?

回答:

解决方案的确是使用继承,我终于在Postgres doc上找到了解决方案。

SELECT p.relname, vl.* 

FROM qgep.is_value_list_base vl, pg_class p

WHERE vl.tableoid = p.oid;

以上是 PostgreSQL:使用动态名称合并多个表 的全部内容, 来源链接: utcz.com/qa/397513.html

回到顶部