我有这个代码,在竞赛中显示一个玩家及其积分列表:
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?php
$result=mysql_query("SELECT * FROM `pointstable` WHERE `contestfield` = 1 ORDER BY `pointsfield` ASC");
while ($info=mysql_fetch_assoc($result)) {
$playerid=$info['playeridfield'];
$playername=$info['playernamefield'];
$pointsfield=$info['pointsfield'];
?>
<tr><td style="text-align:center; padding-bottom:5px" valign="middle"><?=$playername?> made <?=number_format($pointsfield)?></td></tr>
<?php } ?>
</table>
这将显示完整列表,但是当用户播放多次时,它会显示他拥有的所有点...
所以我想要的只是显示第一个值(在这种情况下,因为比赛的目标是获得最低分,所以最低点) playeridfield 是每个值的唯一编号玩家,每个玩家都有一个。
谁能做到这一点?
答案 0 :(得分:2)
在最后的LIMIT 1
中将此问题添加到您的SQL查询中答案 1 :(得分:1)
只需使用mysql min
函数并按ID分组:
SELECT playeridfield, playernamefield, MIN(pointsfield) AS pointsfield FROM `pointstable`
WHERE `contestfield` = 1 GROUP BY `playeridfield` ORDER BY `pointsfield` ASC
答案 2 :(得分:1)
尝试将SQL查询更改为:
$result=mysql_query("SELECT * FROM `pointstable` WHERE `contestfield` = 1 ORDER BY `pointsfield` ASC LIMIT 1");
LIMIT 1
应该这样做,所以查询只返回一行。