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