У меня есть поле автозаполнения, которое запрашивает простую таблицу на соответствие «имя, содержащее строку».
Меня беспокоит то, что я хочу сначала указать точное совпадение.
Я выполняю UNION запрос, подобный следующему:
SELECT 'exact_match' AS type, name FROM table WHERE name='john'
UNION
SELECT 'match' AS type, name FROM table WHERE name LIKE '%john%'
ORDER BY type, name LIMIT 30
Но если пользователь вводит полное имя, результат содержит две записи (если в таблице нет других% john%):
john
john
Как я могу исключить результат одного из двух запросов, если они полностью совпадают?
Я думал, что это была цель UNION (против UNION ALL), но это не так, конечно, из-за типа ' 'value.
Или, может быть, есть лучшее решение, чтобы сначала перечислить точное совпадение?