sql - 我们可以在大查询表上使用带有 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 语句来实现这一点。
我很想知道是否有任何其他方法可以在没有连接的情况下解决此问题,而是将值作为新列映射到表中。
提前感谢您的宝贵时间。请帮忙!
解决方案
如果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)
推荐阅读
- asp.net - Asp.net MVC - 输入类型=“文件”验证错误
- c++ - c ++:使用模板将任何lambda包装在另一个lambda中
- ios - IOS、ASWebAuthSession、SSO、Cordova、OAuth 应用程序多次登录需要输入凭据
- python - 如何在 Windows 上的 docker 中的 django 中运行测试期间修复“TypeError:isinstance() arg 2 must be a type or tuple of types”
- c# - Xamarin.Forms 上的音乐文件节奏和强度检测
- javascript - 如何在解构赋值语法中使用特殊字符(如连字符)?
- jboss - JBoss EAP 6 - 更改密码库密码
- r - R中的qicharts2控制限制
- javascript - 加载模块时出现“Uncaught SyntaxError: Unexpected token {”
- azure-devops - Azure DevOps:流程规则:“清除价值”操作不起作用