MaxCompute动态更新表中某个(多个)字段的数据
功能
MaxCompute支持了delete
、update
功能,但当您需要使用多个insert
、update
、delete
对目标表进行批量操作时,需要编写多条SQL语句,然后进行多次全表扫描才能完成操作。MaxCompute提供的merge into
功能,只需要进行一次全表扫描操作,就可以完成全部操作,执行效率要高于insert
+update
+delete
。
merge into
操作具备原子性,作业中的insert
、update
、delete
操作都执行成功时,作业才算执行成功;任一内部逻辑处理失败,则整体作业执行失败。
同时,merge into
可以为您避免分别执行insert
、update
、delete
操作时,可能导致部分操作执行成功,部分操作执行失败,其中成功部分无法回退的问题。
使用限制
merge into
功能的使用限制如下:
- 仅支持Transactional表。更多创建Transactional表信息,请参见表操作。
- 不允许在同一条
merge into
语句中对相同的行执行多次insert
或update
操作。
查看是否是Transactional表
>desc extended t1;
sql语句
格式
merge into <target_table> as <alias_name_t> using <source expression|table_name> as <alias_name_s>
--从on开始对源表和目标表的数据进行关联判断。
on <boolean expression1>
--when matched…then指定on的结果为True的行为。多个when matched…then之间的数据无交集。
when matched [and <boolean expression2>] then update set <set_clause_list>
when matched [and <boolean expression3>] then delete
--when not matched…then指定on的结果为False的行为。
when not matched [and <boolean expression4>] then insert values <value_list>
实例
MERGE INTO xgj.classes_out AS t1 USING
(SELECT cls_id,name FROM (SELECT *,ROW_NUMBER() OVER(PARTITION BY cls_id ORDER BY name DESC) AS rownumFROM xgj.locations_dealWHERE ds = '${bizdate}') WHERE rownum = 1) AS t2 ON t1.cid =t2.cls_id AND t1.ds ='${bizdate}'
WHEN matched THEN UPDATE SET t1.school_name = t2.name;
其他数据库支持merge into 应该都是可以这样去更新的
阿里云文档
MaxCompute动态更新表中某个(多个)字段的数据相关推荐
- mysql触发器 当记录的指定字段发生变化时,更新表中的另外一个字段,或者更新另外一张关联表中关联记录的字段...
2019独角兽企业重金招聘Python工程师标准>>> 注意:语句中出现的old,new,now(),都为数据库自带的关键字,此处不做解释. 两种情况: 第一种:一张表中,更新某条记 ...
- MySQL数据库使用连接更新表中某个字段数据
连接更新表中数据使用: update .. join .. 语句 上一篇博文创建了一个商品分类表(good_cates),并完成了商品分类信息的插入,如果需要更新goods表中的商品分类信息,把商品分 ...
- MySQL数据库-更新表中的数据详解
更新书记记录是数据操作中常见的操作,可以更新表中已经存在数据记录中的值.在MySQL中可以通过UPDATE语句来实现更新数据记录,该SQL语句可以通过如下几种方式使用:更新特定数据记录,更新所有数据记 ...
- oracle复制另一个字段,【学习笔记】Oracle存储过程 表中列不同时动态复制表中数据到另一个表中...
天萃荷净 分享一篇关于Oracle存储过程实现表之间数据复制功能.两表中列不同,动态的将一表中的数据复制到另一个表中案例 因为要用到回收站功能,删除一条记录,要先放到一个delete表中,以便以后恢复 ...
- MySQL - 更新表中的数据记录
更新表中的数据记录 更新数据记录是数据操作中常见的操作,可以更新表中已经存在数据记录中的值.在MySQL中可以通过UPDATE语句来实现更新数据记录,该SQL语句可以通过如下几种方式使用:更新特定数据 ...
- SQL UPDATE 语句(更新表中的记录)
SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录. 还可以使用AND或OR运算符组合多个条件. SQL UPDATE 语法 具有WHERE子句的UPDATE查询的基本语法如下所示 ...
- Python处理Excel表中单元格带有换行的数据
Python处理Excel表中单元格带有换行的数据 文章目录 Python处理Excel表中单元格带有换行的数据 问题样式 实例问题 实例实现代码 实例结果 问题样式 在数据处理过程中常常会遇到这样一 ...
- mysql 查询两个字段相同的数据_sql语句如何查询一个表中某两个字段的相同数据?...
查询一个表中某两个字段的相同数据代码是:Select Name,ID From A group by Name,ID having count (*)>1. 结构化查询语言(Structured ...
- 如何从Oracle数据库中的表中获取列名(字段名)列表?
如何从Oracle数据库中的表中获取列名(字段名)列表? 目录 如何从Oracle数据库中的表中获取列名(字段名)列表? #示例一 #示例二 示例三: #示例一 可以获取: table_name:表名 ...
最新文章
- How to protect video content (Flash Media Server)
- [ZJOI2007]仓库建设(斜率优化)
- 第一篇博客文章,hello world及编码
- 纯css3开发的响应式设计动画菜单(支持ie8)
- vue输入框联想词功能
- 计算机设备维修税率是多少,设备维修税率是多少
- (翻译)31天Windows Phone学习-1-项目模板
- C++常见面试题(2019年校招总结)
- IOS开发-我的第一个IOS程序
- LabVIEW之安装队列工具包AMC安装问题解决
- C++ 中的mutable关键字
- WebForm控件多字段绑定
- day20,日志和正则表达式
- 原理解析!传智播客java基础入门第二版课后答案
- 计算机u盘序列号,注册表查询usb设备序列号,u盘电序列号注册表
- CDN技术原理以及所用技术介绍
- 【工具脚本】目标检测数据样本的扩增脚本
- 4 种最安全的 MacBook 电池更换选项
- 【机器学习】浅谈 归纳偏置 (Inductive Bias)
- 运行时栈帧结构是怎样的?