Php 如何按每个组的最高值对组进行排序

Php 如何按每个组的最高值对组进行排序,php,mysql,subquery,sql-order-by,window-functions,Php,Mysql,Subquery,Sql Order By,Window Functions,我有以下数据: query url score a www.google.com 3 a www.facebook.com 2 a www.google.com 1 我想按域对条目进行“分组”,然后按每个组的最高分数对域组进行排序,这样我就可以得到: query url score a www.google.com 3 a www.google.com 1 a www.facebook.com 2 尝试:按分数说明从表顺序中选择*,url asc不起作用。它没有明显的

我有以下数据:

query url score  
a www.google.com 3  
a www.facebook.com 2  
a www.google.com 1
我想按域对条目进行“分组”,然后按每个组的最高分数对域组进行排序,这样我就可以得到:

query url score  
a www.google.com 3  
a www.google.com 1
a www.facebook.com 2  
尝试:按分数说明从表顺序中选择*,url asc不起作用。它没有明显的变化:

query url score  
a www.google.com 3  
a www.facebook.com 2  
a www.google.com 1

您可以使用窗口函数-如果您运行的是MySQL 8.0:

select *
from mytable
order by max(score) over(partition by url) desc, score desc
在早期版本中,一个选项使用子查询:

select *
from mytable t
order by 
    (select max(score) from mytable t1 where t1.url = t.url) desc,
    score desc

继续试着做点什么。试着按分数排序,然后按域排序,比如按FIELD1 ASC,FIELD2 ASCHey@GMB排序。我使用的是mac,我的mysql版本是5.7.26,我只有一个表,所以第二个选项对我来说没有意义。@scon:第二个查询就是你需要的。它从同一个表(称为mytable)中选择两次。请试一试。嘿@GMB,我道歉。非常感谢您的回答并鼓励我尝试,我已经挂断了这个问题一段时间了。你是冠军。