You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写UPDATE语句重置从未获胜角色的等级数据?

修正后的UPDATE语句

原SQL的逻辑存在错误:它仅判断当前行的The_team_has_won不等于1,这会把每个角色的未获胜行都更新,但我们要的是从未有过任何获胜记录的角色——也就是该角色的所有记录里,完全没有The_team_has_won=1的情况。

下面是两种靠谱的修正写法:

写法一:用NOT IN筛选无获胜记录的角色ID

UPDATE Table1
SET lvl = 0
WHERE person_code NOT IN (
    SELECT DISTINCT person_code
    FROM Table1
    WHERE The_team_has_won = 1
);

写法二:用NOT EXISTS判断角色无获胜记录

UPDATE Table1 t1
SET lvl = 0
WHERE NOT EXISTS (
    SELECT 1
    FROM Table1 t2
    WHERE t2.person_code = t1.person_code
      AND t2.The_team_has_won = 1
);

补充说明

  • 两种写法都能精准定位从没赢过的角色,只更新他们的lvl为0,不会改动角色A(person_code=3,有获胜记录)的数据。
  • 第二种写法在数据存在NULL值时更稳妥,因为NOT IN遇到NULL会出现不符合预期的结果。

内容的提问来源于stack exchange,提问作者Gtd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:35:29