簡體   English   中英

我需要mysql表中最接近的較小值

[英]I need the closest smaller value in mysql table

我正在為我的mmorpg建立基於經驗點的排名系統。 假設我有2張桌子,

  • table1:用戶名-exp
  • 表2:rankname-exp

每個級別都需要特定數量的exp才能晉升。 現在說用戶名:我有550 exp,在表2中有:

  • 1-200
  • 等級2-600

現在,我希望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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM