Вместо union
вы можете просто поместить оба условия в один запрос:
SELECT *
FROM {$this->blogs}
WHERE ( LOWER(heading) LIKE '%" .strtolower($query) . "%'
OR LOWER(description) LIKE '%" . strtolower($query) ."%'
)
Если вам нужно, чтобы совпадения заголовков были на первом месте, добавьте:
ORDER BY (LOWER(heading) LIKE '%" .strtolower($query) . "%') DESC
Тем не менее,убедитесь, что ваша таблица еще не содержит повторяющихся данных.Если это так, вам нужно выяснить причину и устранить ее, что лучше, чем добавление ключевого слова DISTINCT
после SELECT
.Это по своей природе удаляет дубликаты из вывода.