Допустим, у меня есть таблица news с колонками id(PK), title, description. Также есть некоторый поисковый запрос, например, 'самолет'. Как мне написать запрос так, чтобы сначала найти все записи с совпадением в title, затем все с совпадением в description, исключая уже найденные, и вывести все именно в таком порядке? Что-то по типу (SELECT * FROM news WHERE title LIKE '%самолет%') UNION ALL (SELECT * FROM news WHERE description LIKE '%самолет%'), но без совпадений во второй части запроса.
SELECT * FROM news
WHERE title LIKE '%самолет%'
or description LIKE '%самолет%'
order by title LIKE '%самолет%'
По оператору like вполне можно сортировать. (как обычно, я мог напутать порядок сортировки)
select distinct <перечислить все столбцы кроме sortOrder> from
(SELECT 1 AS sortOrder, news.* FROM news WHERE title LIKE '%самолет%'
UNION all
SELECT 2, news.* FROM news WHERE description LIKE '%самолет%'
) X
ORDER BY sortOrder
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости