2015-04-01 53 views
0

我有几个名字相似但名称不同的表:us_cities,ca_cities和uk_cities。 这些表中的每一个仅包含一列(City_name)。我想联盟所有这些表一起,得到这样一个结果:redshift中的动态表名

select 'US' as country, City_name from US_cities 
union all 
select 'CA' as country, City_name from CA_cities 
union all 
select 'UK' as country, City_name from UK_cities 

在未来,我将有更多的城市表为更多的国家,我想一个动态查询/视图,将确定相关的表(* _cities)并将它们添加到联合查询中。我如何在Redshift中做到这一点?

回答

1

您可以使用information_schema.tables表获取与您的命名约定匹配的表的列表。但是,您需要一个外部过程来替换您的视图。

SELECT * FROM information_schema.tables WHERE table_name LIKE '%_cities'; 

恕我直言,你会好得多具有单cities表,使用视图创建国家特定的版本。 :)

+0

这正是我理解我应该这样做。可悲的是,我正在谈论他们管理的第三方表格,所以我分别拿到了它们。 谢谢 – 2015-04-02 16:46:11