[英]I need the closest smaller value in mysql table
我正在為我的mmorpg建立基於經驗點的排名系統。 假設我有2張桌子,
每個級別都需要特定數量的exp才能晉升。 現在說用戶名:我有550 exp,在表2中有:
現在,我希望php函數通過檢查表2 exp的exp來告訴我我仍然在rank1上,盡管我的exp不是exp列中的值。 我已經盡力而為:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result,
boolean given in... line 6
這是我的代碼:
function expToRank($userexp)
{
global $mysqli;
$sql="SELECT TOP 1 *
FROM table2
WHERE ABS(".$userexp."-exp) =
( SELECT MIN( ABS(".$userexp."-exp)) from table2 )";
$result=mysqli_query($mysqli,$sql);
$rankarray=mysqli_fetch_array($result,MYSQLI_ASSOC);
$rankname=$rankarray["rankname"];
return $rankname;
}
提示:2個exp列為BIGINT(60)。
您可以order by
查詢order by
找到某個exp
值以下的最高排名。 在MySQL中,請使用limit
而不是top
:
select *
from ranktable
where exp < $userexp
order by
exp desc
limit 1
為什么不這樣:
$sql = "SELECT MAX(rank) FROM table2 WHERE $userexp >= exp";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.