Mysql update join 单表批量更新

mysql 的批量插入比较便利,批量更新就有点难受了。这里记录一下,使用update join 对mysql单表的批量更新操作。

单表更新

案例

更具表中 content_idouteach_id 字段改变 sort的值,(不要问为啥不用ID,业务需要。)如下图。

在这里插入图片描述

有一招 update join

UPDATE `表A` a JOIN 
(
SELECT 1 AS content_id, 1 AS outreach_id, 1 AS sort
UNION 
SELECT 1 AS content_id, 2 AS outreach_id, 2 AS sort
UNION 
SELECT 1 AS content_id, 3 AS outreach_id, 3 AS sort
UNION 
SELECT 1 AS content_id, 4 AS outreach_id, 4 AS sort
) b USING(content_id, outreach_id)
SET a.sort=b.sort;

有大佬做了对比,update join 的效率是很高的。去看参考的第一个链接。

解释:

update join 可以用来跨表更新,这个网上就有很多了。 单表更新的思路就是把需要更新的数据组合成一张表,然后通过跨表来更新单表的数据。

这里就不能使用常用的 case when 来更新数据。

UPDATE test
SET sort = (
CASE 
WHEN content_id = 1 and  outeach_id = 1 THEN 1
WHEN content_id = 1 and outeach_id = 2 THEN 2
END
) WHERE id IN (1,2,3);

跨表更新

直接参考下面的参考链接。

参考

Mysql批量更新的三种方式

Mysql之using用法

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL中的批量更新是指一次性更新多条记录。这种操作可以大大提高更新效率,减少数据库开销,特别适合于需要更新大量记录的情况。在MySQL中,批量更新可以使用“UPDATE”语句和“WHERE”语句实现。 首先,需要准备好要更新的数据和更新的条件。可以将要更新的数据存储在一个临时表中,然后使用“UPDATE”语句将临时表中的数据一次性更新到目标表中。在更新语句中,需要使用“JOIN”语句将两个表连接起来,同时还要使用“WHERE”语句指定更新的条件。例如,假设有一个学生表和一个成绩表,我们要将所有学生的数学成绩都加10分,可以这样操作: 1. 使用SELECT语句从成绩表中查询出所有学生的ID和数学成绩,并将数学成绩加10分,保存在一个临时表中: CREATE TEMPORARY TABLE temp_score AS SELECT student_id, math_score+10 as new_score FROM score; 2. 使用UPDATE语句将临时表中的数据一次性更新到学生表中: UPDATE student s JOIN temp_score t ON s.id = t.student_id SET s.math_score = t.new_score WHERE s.gender = '男'; 以上操作会将所有男生的数学成绩加10分。需要注意的是,批量更新可能会引起锁表,影响数据库的并发性能。因此,我们应该合理使用批量更新,避免频繁更新大量记录。同时,需要根据实际情况调整更新的数据量、更新条件和更新频率等因素,以达到最佳的性能表现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值