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查询结果决定了需要查询的其他数据库表。例如,如果tableORDER
中的code
是A,则必须查询tableT\u RESULTS\u A
你在问题中写道
我和雅典娜一起工作,所以我不能编程
我看到Athena有一个和一个,所以你可以用.NET或Java编程。因此,您可以编写查询ORDER
表的代码,并使用该查询的结果构建另一个查询字符串,以仅查询相关表
我的另一个想法是动态SQL。Oracle数据库支持它。我可以创建一个包含变量的字符串,其中一个变量是数据库表名,并让Oracle将该字符串解释为SQL并执行它。我在互联网上搜索了一下雅典娜是否支持这一点(因为我对雅典娜没有任何经验),但没有发现任何东西——这并不意味着它不存在