【发布时间】:2022-12-11 07:52:02
【问题描述】:
我的 PostgreSQL 数据库的公共模式中有几个表。这些表名为“projects_2019”、“projects_2020”、“projects_2021”等,并且具有相同的列。这个想法是每年都会添加一张新桌子。
我想选择名称包含“projects_”的所有表中的所有记录,如果不命名每个表名我怎么能这样做(因为我不知道将来会有多少)?
这是我到目前为止所拥有的:
WITH t as
(SELECT * FROM information_schema.tables WHERE table_schema = 'public' and table_name ~ 'projects_')
SELECT * FROM t
【问题讨论】:
-
您的查询充其量只会为您提供表的名称。然后,您需要以
select * from <table1> union all select ...的形式动态构建查询,然后执行生成的查询。也许更好的解决方案是按年构建 partitioned table 分区。
标签: postgresql