通过引用引用表将数据移动到其他表时替换列的值

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 只是名称错误。检查更新

以上是关于通过引用引用表将数据移动到其他表时替换列的值的主要内容,如果未能解决你的问题,请参考以下文章

在引用其他表时在单个表上使用Delete查询

如何通过引用外键将 Django 模型移动到其他应用程序?

当我引用其他表时,如何保存在 Access 2003 中的表单中创建的数据?

EXCEL里怎样引用某数值对应的另一列的值?

如何使用值编写 UDF 作为对其他列的引用?

为啥我不能使用引用 SQL 中其他列的 checkConstraint 将列添加到现有表