我使用以下方法按每个域组的最高分对数据进行排序:
SELECT * from `Inputs` t
order by (select max(`score`) from `Inputs` t1 where t1.`domain`=t.`domain`) desc, `score` desc
结果是:
query domain url score
a www.google.com www.google.com/a 3
a www.google.com www.google.com/b 1
a www.facebook.com www.google.com/c 2
我不想将域和 url 存储在数据库中,而是想使用以下方法将域计算为查询中 url 的函数:
SUBSTRING(`url` from 1 for locate('/',`url` ,10)-1) as `domain`
如果可能的话,我将能够使用少一列来实现相同的条目排序(如上所述):
query url score
a www.google.com/a 3
a www.google.com/b 1
a www.google.com/c 2
如果可能的话,有谁知道这是如何实现的?我还没有在 stackoverflow 上找到有关对临时表使用列别名的其他问题。
我尝试嵌套另一个查询,但没有运气:
SELECT *, SUBSTRING(`url` from 1 for locate('/',`url` ,10)-1) as `domain` from `Inputs` t
order by (select max(`score`),
(select SUBSTRING(`url` from 1 for locate('/',`url` ,10)-1) as `domain` from `Inputs` t1 )
from `Inputs` t1 where t1.`domain`=t.`domain`) asc, `score` asc
慕勒3428872