Android:知道数据库中的所有项目的字段何时设置为相同的值?

时间:2011-01-25 23:15:13

标签: android sqlite contentobserver

我有一个应用程序,允许用户选择列表中的每个项目并将其设置为“最喜欢的”。如果将所有项目设置为收藏,按钮切换为“取消全部选择”,我认为这将是整洁的。

我正在考虑这样做的方法是注册一个ContentObserver,每当检查到更改时,如果所有项目现在都设置为收藏夹。然后我意识到这可能不是很有效率。但是,我想不出任何其他方式,所以有任何提示吗?

我怎么知道数据库中的所有项目都将其中一个字段设置为相同的值(在这种情况下,字段favorite = 1)?

3 个答案:

答案 0 :(得分:3)

如果发现差异,这是一个应该(我相信)“快速中止”的解决方案。

它避免了与select distinct或group by一样的排序/不同阶段。在某些情况下,这种方法可能会很慢,而在其他情况下,这种方法可能会非常快。 SQLite非常快!还要记住,索引在RDMBS性能中起着很好的作用

内部选择可以用文字值替换,这会降低复杂性。无论如何,为了娱乐。

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

答案 1 :(得分:2)

您也可以

SELECT FieldName FROM Table GROUP BY FieldName

如果您的结果集超过1行,则它们不相同

答案 2 :(得分:2)

Basiclife答案的变体:SELECT DISTINCT FieldName FROM Table