再ETL的时候,经常会遇到列转换的问题,再对照转换中出现多列更新的时候,一下是我总结的一些:
当update多列时有如下几种选择
1.)教科书式写法
update t_table a
set f1=(select f1 from testz b where a.id=b.id),
f2=(select f2 from testz b where a.id=b.id),
f3=(select f3 from testz b where a.id=b.id)
where id=2;
2.)教科书变种
update t_table a
set (f1,f2,f3)=(select f1,f2,f3 from testz b where a.id=b.id)
where id=2;
虽然道理和方法1一样,却省了不少事
3.)另类nest table写法
update (select f1,f2,f3 from t_table where id=2)
set (f1,f2,f3)=(select f1,f2,f3 from testz b where id=2);
此方法虽然比2的代码量要多一些,但是没有表连接,如果两个表都在id列有主键,速度应该较方法1和方法2快一些.
说明:update是一个耗回滚段,耗重做日志,耗时间,耗成本的操作,尤其是大表的多列update,如有必要应比较其与重新建表的效率.
分享到:
相关推荐
本文将详细介绍如何使用UPDATE语句来更新单列和多列的数据。 首先,UPDATE语句的基本语法如下: ```sql UPDATE 表名称 SET 列名称 = 新值 WHERE 条件; ``` 这里,`表名称`是你想要更新的表的名称,`列名称`是你要...
本篇文章将详细讲解如何使用C#来实现类似于SQL的`UPDATE`语句,对DataTable中的数据进行条件性更新。 首先,我们需要了解DataTable的基本结构。DataTable通常包含多个DataRow,每个DataRow代表表中的一行记录。每一...
1. **索引缺失**:在执行UPDATE操作时,如果更新的列没有索引,数据库需要全表扫描来找到匹配的行,这在数据量大的情况下会非常慢。解决方案是为经常用于WHERE子句中的列创建索引,以提高查找效率。 2. **大数据量*...
你可以同时更新多个列,每个列名后面都跟着等号和新值。 3. **新值**:新值可以是常量、表达式或查询结果,只要它们符合列的数据类型。 4. **WHERE**:这是可选但非常重要的部分,用于指定哪些行应该被更新。如果不...
在LabVIEW编程中,多列列表框是一种常用的用户界面组件,用于显示多行多列的数据。这个"LabVIEW多列列表框上色隔行变色.rar"文件可能包含了一个示例或教程,教你如何实现多列列表框的行颜色交替,以提高数据可读性和...
标准 Update 语句是 Oracle 中最基本的更新语句,语法为:`UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值`。例如:`UPDATE t_join_situation SET join_state='1' WHERE year='2011'`。这种方式适用于更新...
在处理 Row changed between retrieve and update 错误时,需要查看在更新之前有没有 update、Delete 的 SQL 语句,如果有,那么也可能对数据窗口的更新造成影响。 PB 的并发控制机制可以通过数据窗口的更新属性...
- 当涉及到多表联接时,`FOR UPDATE OF`可以更加灵活地控制锁定的列: ```sql SELECT * FROM Table1 a JOIN Table2 b ON a.pkid = b.pkid FOR UPDATE OF a.pkid; ``` 这条语句仅锁定`Table1`中的`pkid`列,`...
这种方法的优势在于可以一次性处理所有匹配项,而无需多次执行更新操作。在Oracle 10g及更高版本中,可以使用如下的SQL语句: ```sql UPDATE T1 SET A2 = ( SELECT A22 FROM T2 WHERE T1.A1 = T2.A11 ) WHERE ...
10. **更新日志**:程序更新通常会附带更新日志,列出新特性、改进和已知问题,供开发者和用户参考。 在"UPDATE"这个文件中,可能包含了上述部分或全部功能的实现。通过深入研究这个源码,开发者可以学习如何构建...
"多列拖拽排序智能滚动"是一种提升用户体验的技术,它允许用户通过拖放操作对多列数据进行排序,同时在拖动过程中,如果接近屏幕边缘,页面会自动滚动,确保用户能持续看到可操作区域。这个功能的实现主要依赖于...
* 可以按照一列进行分组,也可以按照多列进行分组。 * 在使用 group by 子句时,select 子句中的任意一列要么包含在聚合函数中,要么必须在 group by 子句中出现过。 例如,从 teacher 表中查询各个系男、女教师的...
比如,它可能包含一个名为“MANIFEST.MF”的文件,列出了zip文件中的所有条目及其属性,以及“UPDATE-SIG.PK7”或“UPDATE-SIG.PK8”签名文件,用于验证更新文件的完整性和安全性。此外,还有一个名为“RECOVERY.RSF...
在这个语句中,我们使用了传统的JOIN语法,通过在 `FROM` 子句中同时列出A表和B表,并在 `WHERE` 子句中指定关联条件 `A.c1 = B.c1` 来实现多表更新。这种方式在一些较旧的SQL方言中是有效的,例如在某些版本的SQL ...
3. **多字段更新**:在描述中提到的“多个字段内容实例”,意味着一次更新可能涉及表中的多个字段。例如,你可能需要同时更新用户的姓名和邮箱地址: ```sql UPDATE 用户表 SET 姓名 = '张三', 邮箱 = 'zhangsan@...
请注意,使用子查询更新多个列时,如果子查询返回多行,UPDATE语句会抛出错误。在上述示例中,由于每个`customer_id`在tmp_cust_city表中只有一个对应的记录,所以不会发生这种情况。然而,为了确保安全,最好在实践...
所以当修改它的数据项时,我们不能简单地用dw_1.update()来更新table,我们可以在程序中设置数据窗口可更新的一个表A(及其可更新列),其他表为不可更新,更新完表A后,再设置另一表B为可更新,表A设置为不可更新,...
UPDATE 语句可以更新单个表或视图中的数据,也可以更新多个表或视图中的数据。 UPDATE 语句的基本语法结构如下: UPDATE { table_name | view_name | rowset_function_limited } SET { column_name = { expression...
Sublime Text支持各种编程语言,并且拥有强大的自定义能力,用户可以通过安装各种插件来扩展其功能,如代码高亮、代码折叠、多列编辑等。这些插件大多数可以从Package Control获取,这是一个方便的包管理器,允许...
这使得`UPDATE`方法非常适合在早期对话中更新会话参数。 #### 术语 - **SIP**: 会话发起协议,一种用于控制多媒体通信会话的应用层协议。 - **INVITE**: SIP 中用于发起或修改会话的方法。 - **对话(Dialog)**: ...