什么是正确的SQL UNION在Android?
问题描述:
(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”是关键字。什么是正确的SQL UNION在Android?
我正在使用关键字搜索Android的字典应用程序。 要求将这些结果以关键字开头。 我想出了sql的联盟的想法,但我不是一个SQL专家,所以有人可以帮助我找出我对上述查询做了什么错误。
仅供参考:我正在使用处理原始SQL语句的rawQuery()。
感谢社区。
答
无法保证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
这是更好地与explicitedly指定ORDER BY
的顺序。我认为SQLite支持:
SELECT word, description
FROM dictionary
WHERE word LIKE '%xxxx%'
ORDER BY (word LIKE 'xxxx%') DESC
谢谢ypercube,你的答案拯救了我的生命。 :) – OffCS 2012-02-02 16:03:09