MySQL 8.0复合运算符最简可用语法技术求助
MySQL复合赋值运算符说明
首先明确:MySQL 不支持 +=、-=、*=、/=这类复合赋值运算符,这是你尝试的代码中+=语句失效的核心原因。
表字段更新的最简写法
更新表中字段的自增/自减操作,最简语法就是直接用普通赋值结合字段自身运算:
UPDATE tableName SET intColumn = intColumn + 5 -- 等价于你想要的 intColumn +=5 WHERE id = 5;
如果存在表别名或者字段名冲突,才需要加上表名限定(比如tableName.intColumn),无冲突时直接写字段名即可。
用户变量的最简写法
对于用户变量(@开头的变量),同样只能用普通赋值语法实现类似复合运算的效果,两种常用写法:
- 使用
SET语句:
SET @intVar = 0; SET @intVar = @intVar + 10; -- 等价于你尝试的 @intVar +=10 SELECT @intVar; -- 输出 10
- 使用
SELECT结合:=赋值符:
SET @intVar = 0; SELECT @intVar := @intVar + 50; -- 直接完成赋值并返回结果
你之前尝试的((SELECT intColumn FROM tableName WHERE id = 5) + 5)写法虽然能运行,但属于冗余写法,会额外触发一次查询,效率不如直接引用字段自身的写法。
内容的提问来源于stack exchange,提问作者askein
相关产品推荐
相关产品推荐

