sql进⾏批量更新或者⼀条sql写出批量更新的语句
有表如下
t_user:字段如下
id,name,phone
t_phone:字段如下
uid,phone
其中t_phone表的uid字段是外键并且唯⼀,他引⽤t_user的id字段,现需要将t_phone表的phone数据插⼊到t_user表中。
update的使⽤当针对于有关联的表时,update可以后接两个或多个表名
Mysql--针对于全部数据
update t_user,t_phone set t_user.phone = t_phone.PHONE where t_phone.UID = t_user.id;
Oracle关联更新⽅式
-- Update
update的使⽤当针对于有关联的表时,update可以在set或者在where通过⼦查询做连接查询--oracle--针对于某条数据
update t_userxx set t_userxx.phone = (select t_phonexx.phone from t_phonexx inner join t_userxx on t_userxx.id =
t_phonexx.uuid where t_userxx.id = '1') where t_userxx.id = '1';
update的使⽤当针对于有关联的表时,⼦查询的表关联的已经声明需要修改的表
oracle--针对于全部数据--有缺陷--如果有空的数据,就会将空的数据也更新过去。
update t_userxx set t_userxx.phone = ( select t_phonexx.phone from t_phonexx where t_userxx.id = t_phonexx.uuid )
oracle--针对于全部数据--可以过滤空数据(exists判读是否存在)
update t_userxx set t_userxx.phone = (select t_phonexx.phone from t_phonexx where t_userxx.id = t_phonexx.uuid) where exists (select 1 from t_phonexx where t_userxx.id = t_phonexx.uuid);
-- 内联视图更新,update后接多表查询的结果集,⽤返回的列进⾏更新
UPDATE ( select t1.fmoney fmoney1,t2.fmoney fmoney2 from t1,t2 where t1.fname = t2.fname )t set fmoney1 =fmoney2;
-- merge更新,最简洁,效率最⾼,在⼤数据量更新时,优先使⽤这种⽅式。
merge into t1
using (select t2.fname,t2.fmoney from t2) t on (t.fname = t1.fname) when matched
then update set t1.fmoney = t.fmoney;
MySQL批量更新⼀条SQL实现
-- 批量更新,de.user_id 为外键
UPDATE tab_user tuser
SET tuser.pay_total
=
//类似于根据外层where条件在⾥⾯进⾏批量更新,借助⼦查询
CASE tuser.id
WHEN id THEN (select sum(de.pay_amout) from tab_user_details de where de.user_id = tuser.id group by de.user_id )
END
WHERE tuser.id IN (select de.user_id from tab_user_details de group by de.user_id);
-- ⼀条sql实现条件更新。
UPDATE categories
SET
display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
, (可接多个进⾏更新)
title = CASE id
WHEN 1 THEN 'New Title 1'
WHEN 2 THEN 'New Title 2'
WHEN 3 THEN 'New Title 3'
END
WHERE id IN (1,2,3);
(这句sql 的意思是,更新display_order 字段,如果id=1 则display_order 的值为3,如果id=2 则dingdan 的值为4……
where部分不影响代码的执⾏,但是会提⾼sql执⾏的效率。确保sql语句仅执⾏需要修改的⾏数,这⾥只有3条数据进⾏更新,⽽where⼦句确保只有3⾏数据执⾏)
MySql四种常⽤更新⼿段
1、.replace into 批量更新
2、insert into ...on duplicate key update批量更新
3、创建临时表,先更新临时表,然后从临时表中update
4、使⽤mysql ⾃带的语句构建批量更新 when
>sql中update什么意思
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论