这是一个简单的查询。
SELECT `a`, TRUNCATE(`b` / 1000, 3) AS `b`
FROM (
...
) AS `m`
GROUP BY `a`
ORDER BY `a`
我要做的是根据b的值改变小数位数(实际为3)。
所以我试了这个:
SELECT `a`, TRUNCATE(`b` / 1000, IF(`b` < 10, 2, 3)) AS `b` ...
还有这个
SELECT `a `, IF(`b ` < 10, TRUNCATE(`b ` / 1000, 2), TRUNCATE(`b ` / 1000, 3)) AS `b `
如果 b
小于10,我要小数点后3位,否则2位。
但这似乎不起作用。。。
资源:https://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html#function_if
2条答案
按热度按时间byqmnocz1#
只需更改您在查询中输入的位置值
作为b
如果(a<1,2,3)意味着如果a<1,那么2将作为结果中的一个值出现,因此您必须切换您的值位置
使用
round
```SELECT a , IF(b < 10, round((b / 1000), 2), round((b / 1000), 3) ) AS b
SELECT ROUND(345.156, 2); result = 345.156
oo7oh9g92#
如果在中的计算结果为真/假,您将查询的运行顺序放错了位置
If()
. 以下可能有效: