如何将sql查询出来的结果集对表进⾏更新
如何将sql查询出来的结果集对表进⾏更新
⼀、需求
数据库有a,b两张表,需要利⽤a表中的字段值去更新或填充b表中的字段值,其中a,b表中通常有相同的字段(⽐如外键)相关联。⼆、⽅法(直接写sql,在数据库客户端进⾏操作)
sql语句查询结果取反
1.内联视图更新:
update
(select a.adname,a.anname,b.areacode from pipeproject a
left join sys_organization b on a.anname where a.buildunit is not null ion is null)
set region=areacode;
通常我们更新表数据的sql结构是:update 表名 set 列名 = 某个值 where 更新条件。在mybatis中,我们
只需将查询到的结果集foreach⼀下即可将数据更新到数据库(在l⽂件中,先查询,后更新)。
但是在数据库客户端直接操作⽤上述所⽰语法则可以达到相同的效果。此结构是:update 关联查询结果 set 要更新的列region = 作为替换数据的列areacode。
其中region字段属于表a,areacode字段属于表b。此时所更新成功的表a的记录数为表a和表b进⾏关联查询结果的记录数,即此更新语句相当于是利⽤查询得到的结果对表a进⾏更新,因此尽管sql语句最后没有where⼦句,也不会对a表进⾏全表更新!
2.⼦查询更新:
update pipeproject a
set a.parentid =(select b.projectid from project b adname=b.projectname)
where a.szplanid='95c112cd72274fbf9dd6d68b19e30023'
and a.parentid is null and a.buildtype='1';
更新表a中 a.szplanid=‘95c112cd72274fbf9dd6d68b19e30023’ and a.parentid is null and a.buildtype=‘1’ 的数据 的parentid 字段, parentid 的值从表b中取。
三、⽅法⼀不⾏可以尝试⽅法⼆

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。