0

我有一个应用程序,可以让用户选择列表中的每个项目并将其设置为他们的“最爱”。我认为,当所有项目都设置为收藏时,按钮切换到“取消全选”会很整洁。

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

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

4

3 回答 3

3

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

它避免了与 select distinct 或 group by 一样的排序/不同阶段。这种方法在某些情况下可能会非常慢和/或在其他情况下的速度非常快,可以忽略不计。SQLite 非常快!还要记住,索引在 RDMBS 性能中发挥着重要作用

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

select exists
  (select * from t
   where val != (select val from t limit 1))
于 2011-01-26T02:42:33.120 回答
2

你也可以做

SELECT FieldName FROM Table GROUP BY FieldName

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

于 2011-01-25T23:19:40.827 回答
2

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

于 2011-01-26T01:39:45.623 回答