Заказ по LOCATE MySql - PullRequest
       31

Заказ по LOCATE MySql

0 голосов
/ 28 ноября 2018

Я пытаюсь получить набор данных, найдя строку на основе ее появления, проверьте следующий запрос -

select name, LOCATE('test', name) 
from afkapi_dev.articles 
where name like '%test%' 
order by LOCATE('test', name) ASC

Результирующий набор -

enter image description here

Набор результатов в порядке, но проблема здесь в заказе.Может кто-нибудь объяснить, почему «тестирование» указано выше «тестовый минимум» , а также предложить способ сделать это.

Спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

Вы, похоже, просите провести дальнейшую сортировку по name.Для многоуровневой сортировки вы можете указать различные столбцы / выражения в предложении ORDER BY, разделенные запятыми, с соответствующим порядком сортировки [ASC or DESC]

Также вы можете использовать псевдоним LOCATE(..) в SELECTи повторно использовать это в ORDER BY.Это должно предотвратить пересчет значений LOCATE(..).

select name, LOCATE('test', name) AS location 
from afkapi_dev.articles 
where name like '%test%' 
order by location ASC, name ASC 
...