gpt4 book ai didi

mysql - 动态地从 hive/sql 表中选择列

转载 作者:搜寻专家 更新时间:2023-10-30 23:45:24 27 4
gpt4 key购买 nike

我是 hive 的新手,也是 sql 的新手。因此,如果我以不恰当的方式实现我的解决方案,请赐教。

Table Structure

我的应用程序将 ID 作为用户输入。然后我需要在Table1中查看它对应的Pname值,然后根据pname的值,需要从Table2中取出对应的列。

换句话说,我需要这样的查询:SELECT (SELECT Pname FROM Table1 WHERE ID=1) FROM Table2 WHERE ID=1;

在 Hive 中可以进行这样的操作吗?如果没有,我可以尝试实现什么替代解决方案?

谢谢

最佳答案

您可以将 table2 转换为这种形式(table3):

ID  Pname  Pval
1 par1 10
1 par2 15

等等。

然后像这样使用连接

select table1.*, table3.pval
from table1 join table3
on table1.id = table3.id and table1.pname = table3.pname

如果你不知道如何构建 table3。这是我的解决方案。

select id, pname, pval
from table2 lateral view
explode(map('par1', Par1, 'par2', Par2, 'par3', Par3)) t as pname,pval

所以最后的sql是

select table1.*, table3.pval
from table1 join (
select id, pname, pval
from table2 lateral view
explode(map('par1', Par1, 'par2', Par2, 'par3', Par3)) t as pname,pval)
table3
on table1.id = table3.id and table1.pname = table3.pname

最后,如果只想获取一个id的记录,可以把where放在最后。

关于mysql - 动态地从 hive/sql 表中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29415018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com