0

ユーザーがリスト内のすべてのアイテムを選択して「お気に入り」として設定できるアプリがあります。全項目をお気に入りに設定した状態で、ボタンが「全選択解除」に切り替わればいいなと思いました。

私がこれを行うことを考えている方法は、ContentObserver を登録することです。これは、変更が行われるたびに、すべてのアイテムがお気に入りとして設定されているかどうかをチェックします。その後、あまり効率的ではないことに気付きました。他に方法が思い浮かばないのですが、何かヒントはありますか?

データベース内のすべてのアイテムのフィールドの 1 つが同じ値に設定されている (この場合、お気に入りのフィールド = 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

Basiclifeによる回答の変形:SELECT DISTINCT FieldName FROM Table

于 2011-01-26T01:39:45.623 に答える
2

あなたもできる

SELECT FieldName FROM Table GROUP BY FieldName

結果セットに複数の行がある場合、それらは同一ではありません

于 2011-01-25T23:19:40.827 に答える