MYSQL / PHP:'AS'xnumber始终为正数

时间:2015-08-11 23:05:47

标签: php mysql

我在我的代码中碰到了一块墙,我需要总数来保持积极。

因此有一个随机生成的乘数。它可以是-1或1.

$query = "SELECT *, A * $MULTIPLIER1 + B * $MULTIPLIER2 + C * $MULTIPLIER3 AS totalnumber FROM data_table
ORDER BY totalscore DESC
LIMIT 2"

此代码本身有效。但是,如果有多个负数乘数,则“totalnumber”变为负数,从而破坏了ORDER BY。

我需要“totalnumber”始终为正数而不会篡改A,B,C乘数,这意味着A multi,B multi,C * multi可以是负数,从而改变totalnumber。我希望这是有道理的...我该如何做这样的事情?

3 个答案:

答案 0 :(得分:2)

http://php.net/manual/en/function.abs.php

abs - 返回数字的绝对值。

echo abs(-15);
15

您也可以在MySQL

中执行此操作

https://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html

SELECT ABS(-15);
15

答案 1 :(得分:1)

您可以使用abs()将否定数转换为正数。但是,我怀疑你想要greatest()

GREATEST(A * $MULTIPLIER1 + B * $MULTIPLIER2 + C * $MULTIPLIER3, 0) AS totalnumber

这会将任何负值转换为0。

答案 2 :(得分:0)

您可以对最终结果求平方,然后取平方根,或者更好地使用ABS运算符- link