大家好,希望您一切都好。我一直在研究一种积分系统,在该系统中,每条消息都会获得积分。一切正常,直到使用表格显示模态的最高点为止。我环顾四周 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>";
}
?>
答案 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速记形式,可将字符类型转换为数字类型。