多表关联更新字段值,将一个表字段值更新为另一个表字段对应的值。
update EHR_Areagrid a set a.regioncode =
(select b.newregioncode from areagrid_comparison b where a.regioncode = b.oldregioncode)
where exists (select 1 from areagrid_comparison b where a.regioncode = b.oldregioncode);
请你尤其注意这里的where子句,你可以尝试不写where子句来执行以下这句话,你将会使得EHR_Areagrid中的很多值变成空。
这是因为在oracle的update语句中如果不写where子句,oracle将会默认的把所有的值全部更新
链接:http://blog.csdn.net/chenghaibing2008/article/details/22686713
一、MS SQL Server 多表关联更新
sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式 中引用要更新的表以外的其它数据。
一般形式:
update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式
例如:
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA);
实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的
二、Oracle 多表关联更新
Oracle没有update from语法,可以通过两种实现方式:
update A
SET 字段1=(select 字段表达式 from B WHERE ...),
字段2=(select 字段表达式 from B WHERE ...)
WHERE 逻辑表达式
UPDATE多个字段两种写法:
写法一:
UPDATE table_1 a
SET col_x1 = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m),
col_x2 = (SELECT b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m)
WHERE EXISTS (SELECT * FROM table_2 b WHERE b.col_n = a.col_m)
或
UPDATE table_1 a
SET col_x1 = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m),
col_x2 = (SELECT b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m)
WHERE a.col_m=(SELECT b.col_n FROM table_2 b WHERE b.col_n = a.col_m)
写法二:
UPDATE table_1 a
SET (col_x1, col_x2) = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m)
WHERE EXISTS (SELECT * FROM table_2 b WHERE b.col_n = a.col_m);
或
UPDATE table_1 a
SET (col_x1, col_x2) = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m)
WHERE a.col_m=(SELECT b.col_n FROM table_2 b WHERE b.col_n = a.col_m)
更新单个记录
UPDATE PUR_PO K SET K.AMOUNT_HASACCEPT_UA=AMOUNT_HASACCEPT_UA+
(SELECT TOTAL_AMOUNT FROM PUR_ACCEPT WHERE FORM_NO=1021 AND ACCEPT_TYPE_VALUE=1 AND STATUS='UA') G
WHERE K.FORM_NO=G.PO_NO
更新多个记录
Oracle写法1
Merge into PUR_PO A
Using (SELECT TOTAL_AMOUNT,PO_NO FROM PUR_ACCEPT WHERE FORM_NO=1021 AND ACCEPT_TYPE_VALUE=1) B
on (A.FORM_NO=B.PO_NO )
when Matched then Update set A.a=A.a-B.TOTAL_AMOUNT,A.b=A.b+b.TOTAL_AMOUNT
Oracle写法2
UPDATE PUR_PO p1 set(a, b)=(select p1.a - p2.total_amount, p1.b + p2.total_amount from PUR_ACCEPT p2 where p1.form_no=p2.po_no and p2.FORM_NO=1021 AND p2.ACCEPT_TYPE_VALUE=1)
where exists(select * from PUR_ACCEPT p2 where p1.form_no=p2.po_no and p2.FORM_NO=1021 AND p2.ACCEPT_TYPE_VALUE=1)
相关推荐
相信大家在日常使用mysql,可能会遇到需要同时更新两张表时,我会采用在同一个事务中使用2句sql语句分别进行更新。其实,这种需要发送2句sql语句的方法效率相对来说是比较低的,有没有只用1句sql语句就可以完成这个...
在MySQL中,可以在 UPDATE语句 中使用JOIN子句执行跨表更新。MySQL UPDATE JOIN的语法如下: UPDATE T1, T2, [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition 更...
我是管理公司付款系统,常要维护联行号数据表,数据的完整性更是用户体验好的基石,为了避免转账打款失败,都要求填写正确的联行号,但不知道如果获取完整联行号表,我整理这样一版数据表,字段内容包括:银行简码...
那么,有什么办法能将测试库中该字段的值更新到开发库中呢? SQL Server中这是比较容易解决的,而Oracle中不知道方法了。 SQL Server中类似问题的解决方法 后来只好用笨的方法: 首先,将数据复制到...
最新银行联行号大全XLS版截止2020-04-25(共185644条),含联行号类别、银行码、城市码、网点全称、联行号、关联联行号、有效日期、结束日期、更新日期等信息。
Hibernate 一对多、多对一、级联、加载、反转
2014中国最新省市区级联sql,为用户更新我们的服务地址吧
之前发布过十四万条版本,这次更新为20201102版,较上次新增两万余条数据,供需要的朋友使用
1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而...如,某表上的触发器上包含对另一个表的数据操作
数据更新:2020年7月份,合计149342家银行,依据银行联行号就是一个地区银行的唯一识别标志。用于人民银行所组织的大额支付系统\小额支付系统\城市商业银行银行汇票系统\全国支票影像系统(含一些城市的同城票据自动...
五级行政区划,更新至2020年10月,省、市、区县、乡镇、村(居)委 字段有:AreaNo,ParentNo,AreaName,WholeName,区划代码 五个表头。 AreaNo:区域编码 ParentNo:上一级区域编码 AreaName:区域名称 WholeName...
更新了最新的省市区三级SQL数据文件,包含三张表,省、市、区,各一张表,最新,最全
一、MySQL中使用从表A中取出数据来更新表B的内容 例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin。SQL语言中不要显示的出现select关键字 update data d,chanpin c set d.zhulei=c....
sql理论题 1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护...如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
pay_type varchar(24) ⽀付⽅式(成功后回写) create_time datetime 创建时间 update_time datetime 更新时间 从⽀付表 字段名 字段类型 备注 id bigint(16) 主键id order_id varchar(24) 订单号 bus_pay_no varchar...
.Net Core2.1三层架构,使用SqlSugar对SqlServer数据进行数据交互,实现增、删、改、查
2018年5月10日,致力于亚太地区市场的半导体元器件...这将充分利用意法半导体的ST25DV的功能特性,甚至无需打开包装便能轻松、方便地更新参数和地区设置。此外,需要更多监控功能的RFID系统如冷链物流也可用ST25DV。
使用pydantic来收集此数据集。...我希望你不要花很多时间在预处理上,因为它是与国际足联20数据集:) file/opensearch/documents/92837/players_fifa21.csv file/opensearch/documents/92837/teams_fifa21.csv
锌指蛋白Zfx在人脑肿瘤干细胞中的表达与意义,饶竞,赵洪洋,X染色体耦联锌指蛋白(Zfx)是锌指蛋白超家族中的一员,是胚胎干细胞和成体干细胞自我更新的共同分子基础,Zfx在人脑肿瘤干细胞(BTSC