什么是正确的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 
+0

谢谢ypercube,你的答案拯救了我的生命。 :) – OffCS 2012-02-02 16:03:09