update table set status = case `id`
when 1 then 0
when 2 then 0
when 3 then 0
when 4 then 0
when 5 then 0 end where id in ('1','2','3','4','5');
除了这样的批量更新语句还有什么高效的批量更新方式?
1
onhao 2022-02-16 12:02:04 +08:00
触发器 ,是一个不错的选择
https://wuhao.pw/archives/268/ |
2
szyp 2022-02-16 12:10:35 +08:00
|
3
PrtScScrLk OP @szyp 8.0 以上能用吗?我现在是 5.7
|
4
onhao 2022-02-16 12:35:40 +08:00
@PrtScScrLk load 5.7 8.0 都可以用的
|
5
Rache1 2022-02-16 12:35:47 +08:00
我觉得这种语句的效率,还不如单条高 ,而且语句还很难看
|
7
onhao 2022-02-16 14:04:13 +08:00
@PrtScScrLk 敢问使用这样的语句场景是怎么样的?
|
8
PrtScScrLk OP @onhao 回头我试试看,嗯,也试试触发器,我前端转后端,sql 学的不深= =,使用场景就是根据 id 批量修改状态 status
|
9
est 2022-02-16 14:22:00 +08:00
我现在最苦恼的是按条件更新一批 id ,需要知道哪些 id 符合条件并且成功更新了。
|
10
onhao 2022-02-16 14:58:59 +08:00
@est 也推荐你用 触发器 ,当更新完成后 对比更新前后更新后的值, 如果值不一样说明成功更新了,记录下更新的信息( ID ) ,这样你就知道那些 ID 更新了。
|
11
bxb100 2022-02-16 17:32:15 +08:00 via Android 2
真不建议使用存储过程,触发器,除非有专门的数据库管理员,业务变更这些都会成为定时炸弹
|
12
sockball07 2022-02-16 19:43:51 +08:00
|