2014-06-29 47 views
0

下面的查詢工作正常的Android4.3.1但與2.3.7。後者的結果由nameA而不是MAX(unix_time)定購。看起來,ORDER BY聲明完全被忽略。我假設有一箇舊的SQLite版本附帶2.3.7,這沒有得到我的查詢權限。有另一種獲得預期結果的方法嗎?SQLite的查詢不能與不同的Android版本工作

String mQuery = "SELECT DISTINCT nameA FROM (
       SELECT nameA, MAX(unix_time) FROM table GROUP BY nameA 
       UNION 
       SELECT nameB, MAX(unix_time) FROM table GROUP BY nameB 
       ORDER BY MAX(unix_time) DESC 
       ) WHERE nameA <> ''"; 

編輯:改變基於從Notulysses回答我的查詢,現在工作完全正常。

String mQuery = "SELECT nameA FROM (
       SELECT nameA, MAX(unix_time) AS time FROM table WHERE nameA <> '' GROUP BY nameA 
       UNION 
       SELECT nameB, MAX(unix_time) AS time FROM table WHERE nameB <> '' GROUP BY nameB 
       ) ORDER BY time DESC"; 
+0

啊,我之前讀過它,我不需要與UNION DISTINCT。不知道爲什麼我保留它。刪除DISTINCT後,它在兩個版本上都能正常工作。非常感謝你。 –

回答

0

我認爲在ORDER BY條款您SELECT不應該保證在SELECT(我的意思是,你不能相信這種行爲)的順序。如果有這樣一個問題,爲什麼你不能給一個別名在查詢MAX(unix_time),然後ORDER BY查詢別名嗎?還有,你不必使用DISTINCT作爲UNION已經給你沒有重複的結果集。