mysql更新数学

mysql更新数学,mysql,Mysql,假设p.U价格等于1 为什么: 使p.U价格等于3 它是在价格上加1,然后再做一遍?我试图做一些更复杂的事情,但当它不起作用时,我把它分解成了有史以来最简单的事情。我可以在这里做一些临时值,计算新的价格,然后将其设置为该值吗 请帮助我,我正在愤怒, 谢谢 MySQL客户端版本:4.1.22 编辑:该列是十进制类型,我尝试对int列进行相同的更新,结果相同 编辑:这不是在代码中运行的,因此代码不可能两次调用相同的更新,而这两次更新肯定会将products\u price设置为2。一定还有别的事 这

假设p.U价格等于1

为什么:

使p.U价格等于3

它是在价格上加1,然后再做一遍?我试图做一些更复杂的事情,但当它不起作用时,我把它分解成了有史以来最简单的事情。我可以在这里做一些临时值,计算新的价格,然后将其设置为该值吗

请帮助我,我正在愤怒, 谢谢

MySQL客户端版本:4.1.22

编辑:该列是十进制类型,我尝试对int列进行相同的更新,结果相同


编辑:这不是在代码中运行的,因此代码不可能两次调用相同的更新,而这两次更新肯定会将products\u price设置为2。一定还有别的事

这是类似的,但没有很好的解决方案,所以我会留下这个打开了

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

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


编辑:您在评论中提到了连接-我敢打赌,您的连接不止一次回拉同一行。

您的SQL看起来不错。“某物”列是唯一的吗?确保只更新一条记录

UPDATE products    
SET products_price = (1 + products_price)    
WHERE products_id = 8

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

没有其他事情发生,我最初是通过一个php脚本完成的,但现在我在phpmyadmin中运行它。真正的更新有几个连接,也可以有一些where's。啊,我打赌这是连接-你必须不止一次地选择同一行。我实际上在运行上面的sql,它仍然这样做,即使我说“where product_id=200”:(哦……糟糕……你能粘贴表结构+数据(或至少部分数据)的转储吗我现在就试试它。这个更新只匹配一行。它只说有一行受影响。它可能会更新同一行两次吗?语法错误…它缺少'AS':
将产品更新为p SET p.products\u price=(1+p.products\u price)其中p.products_id=8
我遇到了完全相同的问题,尽管在刷新相关网页时添加了2,但在初始加载/运行脚本时添加了1。这是否给了任何人一个线索?
UPDATE products    
SET products_price = (1 + products_price)    
WHERE products_id = 8