какой правильный sql UNION в андроиде? - PullRequest
2 голосов
/ 02 февраля 2012
(SELECT word, description 
FROM dictionary
WHERE word LIKE 'xxxx%') AS a

UNION

(SELECT word, description
FROM dictionary
WHERE word LIKE '%xxxx%' AND word NOT IN a.word)

примечание: ключевое слово "xxxxx".

Я работаю над словарным приложением на Android, которое выполняет поиск по ключевым словам. Требуется поставить результаты, начиная с ключевого слова сверху. Мне пришла в голову идея объединения с помощью sql, но я не эксперт по SQL, поэтому кто-то может помочь мне понять, что я сделал неправильно с вышеуказанным запросом.

К вашему сведению: я использую rawQuery (), который обрабатывает необработанный оператор SQL.

Спасибо сообществу.

1 Ответ

4 голосов
/ 02 февраля 2012

Нет гарантии, что оператор 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...