回答

收藏

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

技术问答 技术问答 190 人阅读 | 0 人回复 | 2023-09-12

模型中有一组表(约100个)qgep,名字是,名字以开头开头vl_。它们有相同的列(colA,colB,colC)。
0 `  o" P. P' `6 A( Y. Z- t. P我想做的是得到一个大表,这是我所有的表vl_*表的并集,还有一个带有原始表名的列。: |# J: A9 f: H3 L
我可以得到表列表:0 c- n4 W6 k. V* p% [& v
SELECT table_name  FROM information_schema.tables   WHERE table_schema = 'qgep'   AND table_name LIKE 'vl_%'我发现解决问题的唯一方法就是生成一个问题SQL命令进一步执行:
1 B% e* n1 v! F* U3 c$ p* SSELECT  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命令将输出我想要的。虽然,它不是很好,而且很丑。
8 v, z- Q0 R& {. s" Z我想避免使用EXECUTE。你对找什么有什么建议吗?我能做什么?WITH ... UNION ALL吗?' I+ J& y+ w; c% \; p/ X  g
继承对我有帮助吗? 能知道记录在哪个类别吗?select?
! I/ f  H, c! S  r( u4 \7 B                                                                5 _: g7 K7 ^( d5 D( D6 F4 ~
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则