首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >得到一轮余下的时间

得到一轮余下的时间
EN

Stack Overflow用户
提问于 2014-08-18 10:26:20
回答 1查看 167关注 0票数 0

我有一个用例,在MySQL中有一个列,其中包含一个数字,如12.458

我需要得到这些数字的列表,它们需要在数据库中更新,以便它们四舍五入到小数点后的两位,我意识到它仍然会将小数点的3位存储在数据库中,但我的意思是,就像我给出的示例一样,四舍五入为12.460

我知道我可以通过MySQL轻松地完成这个任务,然后使用下面的查询获取数据,没有问题;但是,我不想在数据被舍入的时间和实际选择的时间内更新数据。

所以,我认为,如果只是选择它,然后用PHP对其进行舍入,例如.

代码语言:javascript
复制
$amount = round($amount, 2);

...and是的,自我选择数据以来,数据库中的数据可能会再次发生变化;但这不是重要的部分--重要的部分是对数据库中的数量运行-+操作。

因此,我想要做的基本上是得到这一轮的剩余结果,然后在mysql字段上运行一个操作。

所以..。

代码语言:javascript
复制
12.457 = 12.46 = +0.003 to field
12.421 = 12.42 = -0.001 to field

不幸的是,该表不是InnoDB,我无法从更新中锁定它。

有更好的方法来做我想做的事吗?

编辑:,您可以同时执行SELECTUPDATE,以便从select获得更新的数据吗?

EN

回答 1

Stack Overflow用户

发布于 2014-08-18 12:55:10

如果您的主要关注点是查看过时的值,则可以使用事务

代码语言:javascript
复制
START TRANSACTION;
UPDATE yourTable SET  yourField = round(yourField, 2);
SELECT * FROM yourTable;
COMMIT;

即使其他进程更新了表,您也会看到一致的结果。然而,这依赖于InnoDB。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25361129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档