从mySQL数据库获得最高分数

时间:2018-12-17 08:48:25

标签: mysql

我已经建立了一个数据库: enter image description here

和结果表:

enter image description here

我正在尝试从数据库中检索数据,以便输出根据谁得分最高的球员以降序显示球员。但是,我得到以下输出:

enter image description here

Pollywinkle Anderson在数据库中的最高得分为600,但仅显示她的得分200。如何获取每个球员的最高分数?分数以VARCHAR的形式存储,我阅读了需要将其转换为INT的类似问题的解决方案。我已经尝试过这样做,但是仍然无法正常工作。一般来说,我对编程非常陌生,将不胜感激。我的代码如下。谢谢。

     <?php
    $sql = "SELECT * , COUNT(*) AS `phone` FROM `players` GROUP BY 
CONCAT(`fname`, `surname`) ORDER BY MAX(CONVERT(`score`,INT)) DESC";

    $result = mysqli_query($conn,$sql)or die(mysqli_error());
    echo "<table>";
    echo "<tr><th>Firstname</th><th>Surname</th><th>Email</th><th>Score</th> 
 <th>Number of Submissions</th></tr>";

    while($row = mysqli_fetch_array($result)) {
        $fname = $row['fname'];
        $surname = $row['surname'];
        $email = $row['email'];
        $score = $row['score'];
        $phone = $row['phone'];
        echo "<tr><td style='width: 200px;'>".$fname."</td><td style='width: 
200px;'>".$surname."</td><td style='width: 200px;'>".$email."</td><td 
style='width: 200px;'>".$score."</td><td style='width: 200px;'>".$phone." 

”;         }

    echo "</table>";

    mysqli_close($conn);
?>

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

SELECT fname,surname,MAX(CONVERT(`score`,INT)) as score, COUNT(*) AS `submission` 
FROM `players` 
GROUP BY fname,surname
ORDER BY score desc

答案 1 :(得分:0)

如果您想按得分顺序列出您的球员,则无需计数或任何分组。您需要做的只是一个简单的select查询,其查询顺序为:

select * from players order by score