MySQL中满足特定条件时如何修改列值避免数据重复计数
实现方案
前置操作(必做,避免误改数据)
执行UPDATE前先查询命中的行,确认是需要修改的目标数据:
-- 假设你的表名为 match_records,请替换为实际表名 SELECT * FROM match_records WHERE Match_A = 1 AND Match_B = 1;
固定修改某一列的方案
如果需求是固定把Match_B改为0,直接执行以下UPDATE语句:
UPDATE match_records SET Match_B = 0 WHERE Match_A = 1 AND Match_B = 1;
如果要固定把Match_A改为0,调整SET字段即可:
UPDATE match_records SET Match_A = 0 WHERE Match_A = 1 AND Match_B = 1;
随机修改其中一列的方案
如果需要随机把两列中的任意一列改为0,可以用以下语句,不会出现两列同时被改0的情况:
UPDATE match_records SET Match_A = IF(RAND() < 0.5, 0, Match_A), Match_B = IF(Match_A = 1, 0, Match_B) WHERE Match_A = 1 AND Match_B = 1;
注意事项
如果你的表数据量较大,或者对数据准确性要求高,建议用事务包裹操作,出错可回滚:
START TRANSACTION; -- 此处放你的UPDATE语句 UPDATE match_records SET Match_B = 0 WHERE Match_A = 1 AND Match_B = 1; -- 执行后先查询确认修改结果正确,再执行COMMIT,有误就执行ROLLBACK回滚 COMMIT;
内容的提问来源于stack exchange,提问作者JumpJ
相关产品推荐
相关产品推荐

