(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语句。
感谢社区。 p>
答案 0 :(得分:4)
无法保证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