Нет гарантии, что оператор UNION
упорядочит строки из двух подзапросов в предполагаемом порядке. UNION ALL
не пытается найти дубликаты, поэтому у него больше шансов на работу (как вы надеетесь).
Так что это может работать (или не может!) - в зависимости от того, как UNION ALL
работает внутри:
(SELECT word, description
FROM dictionary
WHERE word LIKE 'xxxx%') AS a
UNION ALL
(SELECT word, description
FROM dictionary
WHERE word LIKE '%_xxxx%') AS b
Лучше явно указать порядок с помощью ORDER BY
. Я думаю, что SQLite поддерживает это:
SELECT word, description
FROM dictionary
WHERE word LIKE '%xxxx%'
ORDER BY (word LIKE 'xxxx%') DESC