2011-01-25 45 views
0

我有一個應用程序,讓用戶選擇列表中的每個項目,並將其設置爲他們的「最愛」。我認爲這將是整潔,如果,當所有的項目設置爲收藏,按鈕切換到「取消全選」。Android:知道數據庫中的所有項目何時將其字段設置爲相同的值?

我正在考慮這樣做的方式是註冊一個ContentObserver,每當進行更改時檢查是否所有項目現在都設置爲收藏夾。然後我意識到這可能不是很有效。儘管如此,我想不出任何其他方式,所以有什麼提示?

我如何知道數據庫中的所有項目都將其中一個字段設置爲相同的值(在本例中爲field favorite = 1)?

回答

3

這裏是一個如果發現差異,我應該(我相信)「快速中止」的解決方案。

它避免了排序/不同階段與選擇不同或分組。這種方法在某些情況下可能會更慢,並且/或者其他情況下的速度只會非常快。 SQLite非常快!還要記住,索引在RDMBS性能中發揮了很好的作用。

內部選擇可以用文字值替換,這會降低複雜性。無論如何,爲了娛樂。

select exists 
    (select * from t 
    where val != (select val from t limit 1)) 
+0

+1爲了給出一個布爾結果,雖然我同意你的意見:在生產中使用它,我喜歡避免完整索引/表掃描的想法 – Basic 2011-01-26 03:04:29

2

你也可以做

SELECT FieldName FROM Table GROUP BY FieldName 

如果您的結果集已經超過1排,他們是不相同的

2

一個變種答案由Basiclife:SELECT DISTINCT FieldName FROM Table

+0

+1比我的回答更優雅。非常好 – Basic 2011-01-26 03:03:00

相關問題