我有一个包含约100张表的模式,名称为
我找到的唯一解决问题的方法是生成一个SQL命令以进一步执行它:
qgep
,并且以vl_
开头命名。
它们都具有相同的列(colA,colB,colC)。
我想做的是获取所有vl_*
表的联合大表,并在其中添加一个原始表名称的列。
我可以获取表列表: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
来完成某些操作?
继承会有帮助吗?从哪个类中选择记录是可能的吗?