php - 先按分数再按时间排序

标签 php sql

我的表结构如下:

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

阅读更多:SQL multiple column ordering

关于php - 先按分数再按时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33169541/

相关文章:

php - 使用特殊字符时 stripos 返回 false

sql - 如何部分转置表格

java - PostgreSQL。通过具有特定 ID 的属性列表搜索值

php - 锁定等待超时 Symfony2 Ratchet with PdoSessionHandler

php - 通过 SSH 隧道调试 PHP Cloud 应用程序

sql - SQL Server 中的月和年筛选器

mysql - 使用另一个表的主键更新外键列

mysql - 如何避免 MySQL/BaSH 中的特殊/转义字符

php - 随着目标集的增长,循环哈希能否保持一致?

php - 在 PHP 中处理大量数据