› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
PrtScScrLk
V2EX  ›  MySQL

mysql 批量更新有哪些常用的?

  •  
  •   PrtScScrLk · Feb 16, 2022 · 3326 views
    This topic created in 1687 days ago, the information mentioned may be changed or developed.
    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');
    

    除了这样的批量更新语句还有什么高效的批量更新方式?

    12 replies  •  2022-02-16 19:43:51 +08:00
    onhao
        1
    onhao  
       Feb 16, 2022
    触发器 ,是一个不错的选择
    https://wuhao.pw/archives/268/
    PrtScScrLk
        3
    PrtScScrLk  
    OP
       Feb 16, 2022
    @szyp 8.0 以上能用吗?我现在是 5.7
    onhao
        4
    onhao  
       Feb 16, 2022
    @PrtScScrLk load 5.7 8.0 都可以用的
    Rache1
        5
    Rache1  
       Feb 16, 2022
    我觉得这种语句的效率,还不如单条高 ,而且语句还很难看
    onhao
        6
    onhao  
       Feb 16, 2022
    @Rache1 同感,所以用触发器来更新,岂不是更高效
    onhao
        7
    onhao  
       Feb 16, 2022
    @PrtScScrLk 敢问使用这样的语句场景是怎么样的?
    PrtScScrLk
        8
    PrtScScrLk  
    OP
       Feb 16, 2022
    @onhao 回头我试试看,嗯,也试试触发器,我前端转后端,sql 学的不深= =,使用场景就是根据 id 批量修改状态 status
    est
        9
    est  
       Feb 16, 2022
    我现在最苦恼的是按条件更新一批 id ,需要知道哪些 id 符合条件并且成功更新了。
    onhao
        10
    onhao  
       Feb 16, 2022
    @est 也推荐你用 触发器 ,当更新完成后 对比更新前后更新后的值, 如果值不一样说明成功更新了,记录下更新的信息( ID ) ,这样你就知道那些 ID 更新了。
    bxb100
        11
    bxb100  
       Feb 16, 2022 via Android   ❤️ 2
    真不建议使用存储过程,触发器,除非有专门的数据库管理员,业务变更这些都会成为定时炸弹
    sockball07
        12
    sockball07  
       Feb 16, 2022
    刚好我也想问 把这些常数条件和常数值用 UNION 连接起来 再和待更新的表 JOIN 一下再更新对应的值 哪个快

    大概长这样
    UPDATE table main, { union } tmp
    SET main.status = tmp.status
    WHERE main.id = tmp.id
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   913 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 18:46 · PVG 02:46 · LAX 11:46 · JFK 14:46
    ♥ Do have faith in what you're doing.