本篇文章仅仅是SQL语句针对MySQL数据库实现多条件不同值的批量更新的实现。不涉及到存储过程,其他开发语言的各种ORM框架实现。
数据库版本:mysql5.6
准备条件:
鉴与简单快速的理念,设计两张简单的不能再简单的表
用户表:t_user
部门表:t_dept
建表和数据语句,更新实例语句下载地址:
http://pan.baidu.com/s/1i3JBKaD
1. mysql更新符合单个条件的某一个字段的一条数据
UPDATE t_user u SET u.user_name = \'张大山\' WHERE u.user_id = 1;
2. mysql更新符合单个条件的某个更新内容相同字段的多条数据
UPDATE t_user u SET u.user_address = \'广东深圳\' WHERE u.user_id IN (2,3,4);
3. mysql更新符合单个条件的某个更新内容不同字段的多条数据
UPDATE t_user u
SET u.user_address = CASE u.user_id
WHEN 2 THEN \'河北泊头富镇\'
WHEN 3 THEN \'河北泊头交河\'
WHEN 4 THEN \'河北泊头富镇赵村\'
ELSE \'鬼地方\' END
WHERE u.user_id IN (2,3,4,5);
4. mysql更新符合多个条件的多个更新内容不同字段的多条数据
UPDATE t_user u
SET u.user_address = CASE u.user_id
WHEN 2 THEN \'河北泊头富镇\'
WHEN 3 THEN \'河北泊头交河\'
WHEN 4 THEN \'河北泊头富镇赵村\'
ELSE \'鬼地方\' END,
u.user_email = CASE u.user_id
WHEN 2 THEN \'微信\'
WHEN 3 THEN \'公众号\'
WHEN 4 THEN \'程序员之路\'
ELSE \'一起成长\' END
WHERE u.user_id IN (2,3,4,5) AND u.user_postcode = \'062150\';
5. mysql更新条件是通过多表链接查询出来的数据
UPDATE t_user u SET u.user_name = \'程序员之路\'
WHERE u.user_dept_id IN (
(SELECT t.dept_id FROM
(SELECT d.dept_id FROM t_user u LEFT JOIN t_dept d ON u.user_dept_id = d.dept_id) t
WHERE t.dept_id = 2));
6.mysql多表同时更新
UPDATE t_user u LEFT JOIN t_dept d ON u.user_dept_id = d.dept_id
SET u.user_name = \'奋斗\',d.dept_name = \'苦逼\';