2012-02-02 56 views
2
(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()。

感謝社區。

回答

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 

這是更好地與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

相關問題