Я сортирую данные по наивысшему баллу каждой группы доменов, используя:
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