MySQL 批量更新数据是指在一次操作中更新多条记录,而不是逐条更新。这通常通过 UPDATE
语句结合 CASE
或 WHEN
条件来实现。
CASE
或 WHEN
条件来指定更新哪些记录。假设我们有一个用户表 users
,需要批量更新用户的激活状态:
UPDATE users
SET status = CASE id
WHEN 1 THEN 'active'
WHEN 2 THEN 'inactive'
WHEN 3 THEN 'pending'
-- 其他用户ID和状态
END
WHERE id IN (1, 2, 3); -- 需要更新的用户ID列表
Lock wait timeout exceeded
错误原因:这个错误通常是由于其他事务持有锁,导致当前事务等待超时。
解决方法:
SHOW ENGINE INNODB STATUS
查看死锁信息,并解决冲突。原因:可能是由于并发事务导致的更新覆盖或丢失。
解决方法:
SELECT ... FOR UPDATE
来锁定记录。通过以上信息,您应该能够更好地理解和应用 MySQL 批量更新数据的相关知识。
领取专属 10元无门槛券
手把手带您无忧上云