mysql更新数学

Mat*_*ati 5 mysql

说p.products_price等于1

为什么:

UPDATE products p
SET p.products_price = (1 + p.products_price)
WHERE p.products_id = 8
Run Code Online (Sandbox Code Playgroud)

使p.products_price等于3?

它是将价格加1,然后又重新进行一次?我正在尝试做一些更复杂的事情,但是当它不起作用时,我将其分解为有史以来最简单的事情。我可以在这里做出某种临时值,然后计算新价格,然后将其设置为该价格吗?

请帮我,我很生气,谢谢。

MySQL客户端版本:4.1.22

编辑:该列是十进制类型,我在int列上尝试了相同的更新,结果相同。

编辑:这不是在代码中运行,因此该代码没有机会两次调用相同的更新

Mat*_*ati 5

UPDATE products    
SET products_price = (1 + products_price)    
WHERE products_id = 8
Run Code Online (Sandbox Code Playgroud)

正常工作(删除表别名“p”)

  • 语法错误...缺少“AS”:“UPDATE products AS p SET p.products_price = (1 + p.products_price) WHERE p.products_id = 8` (4认同)

Gre*_*reg 0

这绝对应该将 products_price 设置为 2。一定还有其他事情发生。

这与用 PHP 更新 MySQL 字段的问题类似,但没有好的解决方案,所以我也将这个问题保留为开放状态。

您是从客户端运行它还是通过脚本运行它?

您是否有任何打开的事务或其他访问数据库的脚本?

编辑:您在评论中提到了连接 - 我愿意打赌您的连接会多次拉回同一行。