
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 真不建议使用存储过程,触发器,除非有专门的数据库管理员,业务变更这些都会成为定时炸弹 |
12 sockball07 2022-02-16 19:43:51 +08:00 |