php/mysql:会员得分最高的前10名

php/mysql:会员得分最高的前10名,php,mysql,sql,join,group-by,Php,Mysql,Sql,Join,Group By,我正在从一个表中制作记分板,其中成员的详细信息存储在一个表中,分数存储在另一个表中,成员使用外键。我知道我可以通过以下方式显示排行榜: $lbquery = mysql_query("SELECT mid, SUM( score ) AS count FROM `memberscores` GROUP BY mid ORDER BY count DESC"); $lbrow = mysql_fetch_array($lbquery); $memid = $lbrow["mid"]; $mems

我正在从一个表中制作记分板,其中成员的详细信息存储在一个表中,分数存储在另一个表中,成员使用外键。我知道我可以通过以下方式显示排行榜:

$lbquery = mysql_query("SELECT mid, SUM( score ) AS count FROM `memberscores` GROUP BY mid ORDER BY count DESC");
$lbrow = mysql_fetch_array($lbquery);

$memid = $lbrow["mid"];
$memscore = $lbrow["count"];

    $memquery = mysql_query("SELECT firstname, lastname FROM `members` WHERE `mid`=".$memid);
    $memrow = mysql_fetch_array($memquery);
    $fname = $memrow["firstname"];
    $lname = $memrow["lastname"];

echo $lname." ".$fname." = "$memscore;

但我很困惑如何显示前十个,因为我可能不得不使用循环来显示表中的前十个。但不确定它将如何使用。

我认为您需要一个简单的连接:

SELECT m.mid, m.firstname, m.lastname, SUM(s.score) cnt 
FROM memberscores s 
INNER JOIN members m ON m.mid = s.mid
GROUP BY m.mid, m.firstname, m.lastname 
ORDER BY cnt DESC
LIMIT 10

这将生成一个按总分排名前10名的结果集,其中包括每个用户的名字和姓氏。然后,您可以逐行获取结果集,并在应用程序中显示结果。

为什么要使用不推荐的api并在PHP7+中删除?我不明白,所以您的意思是,如果在PHP7+中删除了某些内容,是否应该无人使用?而已经在商业上运行的旧版本应用程序会被删除吗?@Hashmi不,任何人都不应该使用它,你应该尝试在旧版本应用程序中远离它。你这样做只是在更深地挖掘自己。如果您使用的PHP版本仍然有
mysql\u query
,那么它就死了,甚至不再接收重要的安全更新。开始远离它,或者至少围绕它编写您自己的抽象层,这样您就不会直接使用它,并且可能有希望修复它。这是否回答了您的问题?