我的表结构如下:
Name email score time
Hello abc@gmail.com 100 15
Hello abc@gmail.com 58 10
Test def@gmail.com 100 12
Stack xyz@gmail.com 90 20
Test def@gmail.com 50 40
使用选择查询
$q="SELECT name, MAX(score) as score ,email FROM users GROUP BY email ORDER BY MAX(score) DESC LIMIT 10";
生成以下结果。
Name email score time
Hello abc@gmail.com 100 15
Test def@gmail.com 100 12
Stack xyz@gmail.com 90 20
我感到困惑的是,如果两个用户的分数相同,我想根据最短时间对结果进行排序,因为“测试”用户在 12 秒内获得 100 分,所以它应该排在第一位。
最佳答案
SELECT name, MAX(score) as score, email
FROM users GROUP BY email
ORDER BY MAX(score) DESC, time ASC LIMIT 10; # note how multiple column ordering is made
关于php - 先按分数再按时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33169541/