Допустим, у меня есть таблица 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Делаю тестовое задание там есть следующие пункты:
Как выбрать в массиве и опубликовать данные за месяц из базы с разбивкой данных за каждый день? Есть таблицы из которых нужно вытянуть запрс...
В течении развития проекта пришлось изменить формат вывода дат записейМодуль создания статей сохраняет дату в формате MySQL DATETIME, то есть вида...
Установил apache, php, php-fpm, mysql-client/server, актуальные версии