Один подход заключается в добавлении ОКВЕК ВУ к вашему запросу:
ORDER BY IF(name LIKE 'a%',1,2)
Something например:
SELECT *
FROM address
WHERE name LIKE 'a%' OR name LIKE '% a%'
ORDER BY IF(name LIKE 'a%',1,2)
LIMIT 10
Для того, чтобы избежать "Использование FileSort" операции на больших наборов (т.е. МНОГО строк в адресе), и если вы хотите, чтобы вернуть 10 строк, более сложный ищет запрос, скорее всего, работать лучше, путем ограничения числа строк, которые будут отсортированы:
SELECT c.*
FROM (SELECT a.*
FROM (
SELECT *
FROM address
WHERE name LIKE 'a%'
LIMIT 10
) a
UNION ALL
SELECT b.*
FROM address b
WHERE b.name LIKE '% a%' AND b.name NOT LIKE 'a%'
LIMIT 10
) c
ORDER BY c.name LIKE 'a%' DESC
LIMIT 10
@zerkms спасибо за обновление, многое приложение reciated ': D' –
@ spencer7593 yes right': D' Я скопировал неправильное состояние, плохо. Я просто удалю его, чтобы избежать путаницы. –