Sql 优化动态选择表或其他表的视图

Sql 优化动态选择表或其他表的视图,sql,amazon-athena,Sql,Amazon Athena,所以问题是我有三个结构相同的巨大表,我需要根据另一个查询的结果显示其中一个表的结果 因此,我的订单表如下所示: code order A 0 B 2 C 1 我需要从t\u结果中检索数据 我的方法(有效)如下所示: select * from t_results_a where 'A' in ( select code from t_order where order = 0 ) UNION ALL select * from t_resul

所以问题是我有三个结构相同的巨大表,我需要根据另一个查询的结果显示其中一个表的结果

因此,我的订单表如下所示:

code   order
A      0
B      2
C      1

我需要从
t\u结果中检索数据

我的方法(有效)如下所示:

select *
from t_results_a
where 'A' in (
  select code
  from t_order
  where order = 0
)

UNION ALL

select *
from t_results_b
where 'B' in (
  select code
  from t_order
  where order = 0
)

UNION ALL

select *
from t_results_c
where 'C' in (
  select code
  from t_order
  where order = 0
)


因为我正在与雅典娜合作,所以无法编程,所以有没有办法不扫描所有三个表?

我认为更改数据库模式不是一个选项。
如果是,您可以使用一个数据库表并添加一个
code
列,其值可以是a、B或C

基本上,对
ORDER
表的SQL查询结果决定了需要查询的其他数据库表。例如,如果table
ORDER
中的
code
是A,则必须查询table
T\u RESULTS\u A

你在问题中写道

我和雅典娜一起工作,所以我不能编程

我看到Athena有一个和一个,所以你可以用.NET或Java编程。因此,您可以编写查询
ORDER
表的代码,并使用该查询的结果构建另一个查询字符串,以仅查询相关表

我的另一个想法是动态SQL。Oracle数据库支持它。我可以创建一个包含变量的字符串,其中一个变量是数据库表名,并让Oracle将该字符串解释为SQL并执行它。我在互联网上搜索了一下雅典娜是否支持这一点(因为我对雅典娜没有任何经验),但没有发现任何东西——这并不意味着它不存在