Вы можете использовать оператор CASE
в ORDER BY
для определения приоритета name .В приведенном ниже примере все результаты, в которых сопоставляется имя, будут на первом месте, потому что оператор CASE
будет иметь значение 1, тогда как все остальные результаты будут иметь значение 2.
По описанию вашей проблемы я не уверен, что именно выхотите, чтобы поведение было таким, но вы, безусловно, можете использовать эту технику для создания более изощренных случаев, чтобы расставить приоритеты для ваших результатов.
SELECT *
FROM products
WHERE (name LIKE '%$search_query%' OR description LIKE '%$search_query%')
ORDER BY CASE WHEN name LIKE '%$search_query%' THEN 1 ELSE 2 END