MySQL 根据条件多值更新的实现

 更新时间:2025年03月14日 09:25:19   作者:王小工  
本文主要介绍了MySQL 根据条件多值更新的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

MySQL多条件批量更新核心语法:

UPDATE 表名
SET 
    字段1 = CASE 
        WHEN 条件1 THEN 值1
        WHEN 条件2 THEN 值2
        ELSE 字段1 
    END,
    字段2 = CASE 
        WHEN 条件1 THEN 值3
        WHEN 条件2 THEN 值4
        ELSE 字段2
    END
WHERE 整体过滤条件;

示例场景:更新商品库存和价格

 
UPDATE products
SET
    stock = CASE 
        WHEN category_id = 5 AND price > 100 THEN stock - 10
        WHEN create_date < '2024-01-01' THEN stock + 5
        ELSE stock
    END,
    price = CASE 
        WHEN category_id = 5 THEN price * 0.9
        WHEN stock > 1000 THEN price * 0.8
        ELSE price
    END
WHERE status = 'active';

高效写法技巧:

  • 批量更新逻辑
UPDATE users
SET 
    vip_level = CASE
        WHEN score >= 1000 THEN 'Diamond'
        WHEN score >= 500 THEN 'Gold'
        ELSE vip_level
    END,
    discount = CASE 
        WHEN score >= 1000 THEN 0.7
        WHEN score >= 500 THEN 0.8
        ELSE discount
    END
WHERE registration_year = 2024;

关键注意事项:

  • 条件优先级:WHEN子句按书写顺序匹配
  • 必须包含ELSE:防止意外覆盖数据,建议保留原值
  • 性能优化:WHERE子句需使用索引字段
  • 事务处理:大批量更新建议分批次执行
  • 多表关联:可用JOIN实现跨表条件更新
UPDATE orders o
JOIN payments p ON o.id = p.order_id
SET 
    o.status = CASE 
        WHEN p.paid = 1 THEN 'completed'
        ELSE 'pending'
    END,
    p.processed_at = NOW()
WHERE o.create_date > '2024-06-01';

扩展方案:使用IF函数简化二元判断

UPDATE employees
SET
    salary = IF(performance > 90, salary * 1.2, salary),
    bonus = IF(join_year < 2020, bonus + 5000, bonus)
WHERE department = 'Engineering';

建议根据实际数据量添加事务控制(BEGIN/COMMIT)和分页更新(LIMIT),避免长时间锁表。

到此这篇关于MySQL 根据条件多值更新的实现的文章就介绍到这了,更多相关MySQL 多值更新内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL数据表索引命名规范的实现示例

    MySQL数据表索引命名规范的实现示例

    索引是提高查询性能的重要工具,本文主要介绍了MySQL数据表索引命名规范的实现示例,包括不同类型索引的命名方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • MySQL与PHP的基础与应用专题之表连接

    MySQL与PHP的基础与应用专题之表连接

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,本系列将带你掌握php与mysql的基础应用,本篇表连接开始
    2022-02-02
  • MySQL实现类似Oracle序列的方案

    MySQL实现类似Oracle序列的方案

    今天小编就为大家分享一篇关于MySQL实现类似Oracle序列的方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 浅谈MySQL索引为什么是B+树

    浅谈MySQL索引为什么是B+树

    MySQL使用B+树索引来提高数据查询效率,B+树是一种自平衡的多路搜索树,具有平衡性、多路性和高效的查找、插入和删除操作,与B树相比,B+树的所有数据都存储在叶子节点中,并且叶子节点通过链表连接,这使得范围查询更加高效,因此,MySQL选择B+树作为索引的数据结构
    2024-12-12
  • Sysbench多线程性能测试工具

    Sysbench多线程性能测试工具

    sysbench是一个多线程性能测试工具,可以进行CPU/内存/IO/数据库等性能测试,不过我绝大多数的时候都是用它来对数据库(MySQL)进行oltp测试
    2012-11-11
  • MySQL InnoDB和MyISAM数据引擎的差别分析

    MySQL InnoDB和MyISAM数据引擎的差别分析

    InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持
    2011-05-05
  • MySQL一劳永逸永久支持输入中文的方法实例

    MySQL一劳永逸永久支持输入中文的方法实例

    相信大家在使用MySQL数据库的过程中,或多或少都遇到报错,下面这篇文章主要给大家介绍了关于MySQL一劳永逸永久支持输入中文的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • mysql实用技巧之比较两个表是否有不同数据的方法分析

    mysql实用技巧之比较两个表是否有不同数据的方法分析

    这篇文章主要介绍了mysql实用技巧之比较两个表是否有不同数据的方法,结合实例形式分析了mysql数据表比较的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-12-12
  • 如何使用MySQL Explain 分析 SQL 执行计划

    如何使用MySQL Explain 分析 SQL 执行计划

    MySQL 提供的 EXPLAIN 工具能够帮助我们深入了解查询语句的执行过程、索引使用情况以及潜在的性能瓶颈,本文将详细介绍如何使用 EXPLAIN 分析 SQL 执行计划,并探讨其中各个重要字段的含义以及优化建议,感兴趣的朋友一起看看吧
    2025-04-04
  • MySQL用作备份还原的导入和导出命令用法整理

    MySQL用作备份还原的导入和导出命令用法整理

    这篇文章主要介绍了MySQL用作备份还原的导入和导出命令用法整理,包括mysqldump的命令的使用以及load data相关命令,需要的朋友可以参考下
    2015-12-12

最新评论