我有一个应用程序,可以让用户选择列表中的每个项目并将其设置为他们的“最爱”。我认为,当所有项目都设置为收藏时,按钮切换到“取消全选”会很整洁。
我正在考虑这样做的方式是注册一个 ContentObserver,每当进行更改时,它都会检查是否所有项目现在都设置为收藏夹。然后我意识到这可能不是很有效。不过,我想不出任何其他方式,所以有什么提示吗?
我怎么知道数据库中的所有项目都将其中一个字段设置为相同的值(在这种情况下,字段最喜欢 = 1)?
我有一个应用程序,可以让用户选择列表中的每个项目并将其设置为他们的“最爱”。我认为,当所有项目都设置为收藏时,按钮切换到“取消全选”会很整洁。
我正在考虑这样做的方式是注册一个 ContentObserver,每当进行更改时,它都会检查是否所有项目现在都设置为收藏夹。然后我意识到这可能不是很有效。不过,我想不出任何其他方式,所以有什么提示吗?
我怎么知道数据库中的所有项目都将其中一个字段设置为相同的值(在这种情况下,字段最喜欢 = 1)?
如果发现差异,这是一个应该(我相信)“快速中止”的解决方案。
它避免了与 select distinct 或 group by 一样的排序/不同阶段。这种方法在某些情况下可能会非常慢和/或在其他情况下的速度非常快,可以忽略不计。SQLite 非常快!还要记住,索引在 RDMBS 性能中发挥着重要作用。
内部选择可以用文字值替换,这将降低复杂性。无论如何,为了娱乐。
select exists
(select * from t
where val != (select val from t limit 1))
你也可以做
SELECT FieldName FROM Table GROUP BY FieldName
如果您的结果集超过 1 行,则它们不相同
Basiclife 答案的变体:SELECT DISTINCT FieldName FROM Table