max()函数令人失望的是最低值

时间:2018-08-16 17:05:10

标签: php html mysql

大家好,希望您一切都好。我一直在研究一种积分系统,在该系统中,每条消息都会获得积分。一切正常,直到使用表格显示模态的最高点为止。我环顾四周 stackoverflow但没有找到解决方案,问题是我的最高点是119 ...但是当我使用MAX函数时,我得到的最小值是49.8,它仅显示一个结果..而且我也想得到提示或想知道如何在具有该MAX()命令的查询中选择其他列。以下是我的php,希望这些信息足够了!谢谢...

    <?php

$get = $mysqli->query("SELECT *  FROM boom_users WHERE user_point > 20 LIMIT 5");
while($row = $get->fetch_assoc()){
    echo "<table>";
  echo "<tr>";

    echo "<td><img class='avatar_menu glob_av' src='https://**********z.com/avatar/" . $row['user_tumb'] . "' ></td>";
    echo "<td style='width:90%;' class='username " . $row['user_color'] . "'> " . $row['user_name'] . "</td>";
    echo "<td>" . $row['user_point'] . "</td>";
    echo "</tr>";
    echo "</table>";
}
    ?>

1 个答案:

答案 0 :(得分:0)

当预期结果为MAX(foo)时,49.8(SQL聚合函数)返回119的最可能解释是foo被定义为字符类型,而不是数字类型。

使用MAX()聚合函数还将所有行“折叠”为单行。 MySQL专用的非标准扩展名允许返回SELECT列表中的其他表达式...不能保证为这些表达式返回的值来自提供MAX()返回值的同一行。 / p>


缺少具体的规范,包括样本数据和预期输出的示例,因此无法为适当的查询提出建议。我们只是在猜测。

这是一个猜测:

 SELECT b.*
   FROM boom_users b 
  WHERE ( b.user_point + 0 ) > 20 
  ORDER
     BY ( b.user_point + 0 ) DESC 
  LIMIT 5

注意:“ + 0”是方便的MySQL速记形式,可将字符类型转换为数字类型。