2011-01-25 44 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

相关问题