我在我的代码中碰到了一块墙,我需要总数来保持积极。
因此有一个随机生成的乘数。它可以是-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。我希望这是有道理的...我该如何做这样的事情?
答案 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。