我有一个用例,在MySQL中有一个列,其中包含一个数字,如12.458。
我需要得到这些数字的列表,它们需要在数据库中更新,以便它们四舍五入到小数点后的两位,我意识到它仍然会将小数点的3位存储在数据库中,但我的意思是,就像我给出的示例一样,四舍五入为12.460。
我知道我可以通过MySQL轻松地完成这个任务,然后使用下面的查询获取数据,没有问题;但是,我不想在数据被舍入的时间和实际选择的时间内更新数据。
所以,我认为,如果只是选择它,然后用PHP对其进行舍入,例如.
$amount = round($amount, 2);...and是的,自我选择数据以来,数据库中的数据可能会再次发生变化;但这不是重要的部分--重要的部分是对数据库中的数量运行-或+操作。
因此,我想要做的基本上是得到这一轮的剩余结果,然后在mysql字段上运行一个操作。
所以..。
12.457 = 12.46 = +0.003 to field
12.421 = 12.42 = -0.001 to field不幸的是,该表不是InnoDB,我无法从更新中锁定它。
有更好的方法来做我想做的事吗?
编辑:,您可以同时执行SELECT和UPDATE,以便从select获得更新的数据吗?
发布于 2014-08-18 12:55:10
如果您的主要关注点是查看过时的值,则可以使用事务
START TRANSACTION;
UPDATE yourTable SET yourField = round(yourField, 2);
SELECT * FROM yourTable;
COMMIT;即使其他进程更新了表,您也会看到一致的结果。然而,这依赖于InnoDB。
https://stackoverflow.com/questions/25361129
复制相似问题