通过引用引用表将数据移动到其他表时替换列的值
Posted
技术标签:
【中文标题】通过引用引用表将数据移动到其他表时替换列的值【英文标题】:To replace value of a column while moving data to other table by referring reference table 【发布时间】:2018-01-15 14:46:26 【问题描述】:假设我有一个名为“Table1”的表,其列和值如下
---------------------------
action | component | type |
---------------------------
1 | 2 | 1 |
2 | 3 | 3 |
3 | 4 | 2 |
---------------------------
并且“Table2”与“table1”具有完全相同的结构。
现在我有另一个表“参考”,如下所示
---------------------------
description | id | value |
---------------------------
action | 2 | create|
action | 1 | delete|
action | 3 | update|
component | 2 | c1 |
component | 4 | c2 |
component | 3 | c3 |
type | 2 | t1 |
type | 1 | t2 |
type | 3 | t3 |
---------------------------
现在,我需要通过引用“reference”表中的值将数据从“table1”移动到“table2”。我的结果表应如下所示。
action | component | type |
---------------------------
delete | c1 | t2 |
create | c3 | t3 |
update | c2 | t1 |
---------------------------
请帮助我进行相同的查询。提前致谢。
【问题讨论】:
哪个您使用的是 SQL?发帖前你有没有尝试过? 实际上我正在尝试这是 hive 查询,而我尝试的是在选择时尝试用 select 语句替换特定列,其中包括带有引用表的 join 语句。但它没有发生。 【参考方案1】:您正在寻找多个连接:
select t1a.value as action,
t1c.value as component,
t1t.value as type
from table2 t2 join
table1 t1a
on t2.action = t1a.id and t1a.description = 'action' join
table1 t1c
on t2.component = t1c.id and t1c.description = 'component' join
table1 t1t
on t2.type = t1t.id and t1t.description = 'type';
【讨论】:
谢谢兄弟,你拯救了我的一天。我想在 hive 中进行查询,这非常有效。【参考方案2】:你可以这样做:
select
(select b.description from reference b where A.action = b.id and b.description = 'action') as action,
(select c.description from reference c where A.action = c.id and c.description = 'component') as component,
(select d.description from reference d where A.action = d.id and d.description = 'type') as type
from table_1 A
【讨论】:
也许我的问题不清楚?实际上,我们需要通过引用“reference”表中的特定值将数据从“table1”填充到“table2”。在您的回答中,您指的不是“参考”表吗? @CodingOwl 只是名称错误。检查更新以上是关于通过引用引用表将数据移动到其他表时替换列的值的主要内容,如果未能解决你的问题,请参考以下文章