和结果表:
我正在尝试从数据库中检索数据,以便输出根据谁得分最高的球员以降序显示球员。但是,我得到以下输出:
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);
?>
答案 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