sql UPDATE,一个计算用了多次,能不能只计算一次?

Posted

技术标签:

【中文标题】sql UPDATE,一个计算用了多次,能不能只计算一次?【英文标题】:sql UPDATE, a calculation is used multiple times, can it just be calculated once? 【发布时间】:2010-06-14 16:50:58 【问题描述】:

使用:

UPDATE `play`
   SET `counter1` = `counter1` + LEAST(`maxchange`, FLOOR(`x` / `y`) ), 
       `counter2` = `counter2` - LEAST(`maxchange`, FLOOR(`x` / `y`) ), 
       `x` = MOD(`x`, `y`) 
 WHERE `x` > `y` 
   AND `maxchange` > 0

如您所见,LEAST(maxchange, FLOOR(x / y) ) 被多次使用,但它应该始终具有相同的值。有没有办法优化这个,只计算一次?

为了记录,我正在用 php 编写代码。

【问题讨论】:

【参考方案1】:

数据库引擎查询优化器应该优化它。

如果您想确定,请查看explain plan。我认为 mysql 不支持解释更新,但它使用与 SELECT 相同的查询优化器,因此您可能必须将其转换为选择。

【讨论】:

以上是关于sql UPDATE,一个计算用了多次,能不能只计算一次?的主要内容,如果未能解决你的问题,请参考以下文章

oracle SQL语句,能不能同时update一个表的几个字段的值?

sql 请教update语句in多个值时,进行多次更新

MYSQL 能不能用一条语句将两个关联的表,更新其中一个表的一字段

update set语句

Eclipse计划系统还能不能安心地用了?国家药监局公布瓦里安对放射治疗计划系统主动召回

jdbcTemplate必须使用spring事务吗 否则不能提交