首页 > 解决方案 > 我们可以在大查询表上使用带有 INSERT 的 CASE 语句吗?

问题描述

我正在尝试从另一个没有连接的子表中附加与主表中唯一键值相对应的值。

例如:

主表:

COL1 | COL2 | COL3
aaa  | 1111 | a111 
bbb  | 2222 | b222 
ccc  | 3333 | c333 
ddd  | 4444 | d444 
abc  | 1233 | b222 

SUB_TABLE

COL1 | COL2
Cat  | a111
Dog  | b222
bird | c333
fish | d444

我需要如下结果

COL1 | COL2 | COL3 | COL4
aaa  | 1111 | a111 | Cat 
bbb  | 2222 | b222 | Dog 
ccc  | 3333 | c333 | Bird
ddd  | 4444 | d444 | fish
abc  | 1233 | b222 | Dog

我试图通过在 BigQuery 的第 4 列的 INSERT 中使用 CASE 语句来实现这一点。

我很想知道是否有任何其他方法可以在没有连接的情况下解决此问题,而是将值作为新列映射到表中。

提前感谢您的宝贵时间。请帮忙!

标签: sqlgoogle-bigquerysubqueryinner-joinsql-insert

解决方案


如果col2在 中是唯一的sub_table,则可以使用子查询:

select m.*,
    (select s.col1 from sub_table s where s.col2 = m.col3) as col4
from main_table m

或者您可以加入:

select m.*, s.col1
from main_table m
inner join sub_table s on s.col2 = m.col3

目前尚不清楚插入问题是什么意思。如果要col4在现有行中更新main_table,可以执行以下操作:

update main_table m
set col4 = (select s.col1 from sub_table s where s.col2 = m.col3)

推荐阅读