mysql批量更新语句

1. 一条SQL语句实现批量更新数据,update结合case、when和then的使用。最优选

UPDATE mytable SET 
myfield = CASE id 
        WHEN 1 THEN '3'
        WHEN 2 THEN '4'
        WHEN 3 THEN '5'
END 
WHERE id IN (1,2,3);

详解:这句sql的意思是,更新myfield 字段,如果id=1 则myfield 的值为3,如果id=2 则 myfield 的值为4,如果id=3 则 myfield 的值为5。

2. 直接update执行强制更新。性能问题

 UPDATE `asset` SET `state` = '2' WHERE (system_id in  ( '111111111111111','12222222222','333333333','4444444444'))

3. replace into。 操作本质是对重复的记录先deleteinsert。如果更新的字段不全会将缺失的字段置为缺省值,插入之后,数据的自增主键id会改变,执行一次,实际影响行数1行,慎用!!!

如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 否则,直接插入新数据。插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据

用法一:插入语句

replace INTO `user` ( `user`, `pwd`, `age`) VALUES ( 'test1', '111', 11);

用法二:用于复制数据

replace INTO `user` ( `user`, `pwd`, `age`)  select user,pwd,age from test

用法三:用于更新数据,会根据唯一索引来更新

replace INTO `lvxx`.`user` set user = 'test1' ,age = 11,pwd = '33333';

4. Assign  FirstorCreate 语句

Attrs: 如果没有找到记录,则使用Attrs中的数据来初始化一条记录:

//使用attrs来初始化参数,如果未找到数据则使用attrs中的数据来初始化一条
//注意:attrs 必须 要和FirstOrInit 或者 FirstOrCreate 连用
db.Where(User{Name:"xiaoming"}).Attrs(User{Name:"xiaoming",Age:12}).FirstOrInit(&u)

Go orm框架gorm学习_rickiyang的博客-CSDN博客_gorm分表


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值