Android:データベース内のすべてのアイテムがいつフィールドに設定されているかを知っていますか?
-
24-10-2019 - |
質問
ユーザーがリスト内のすべてのアイテムを選択し、「お気に入り」として設定できるアプリがあります。すべてのアイテムがお気に入りとして設定されている場合、ボタンが「すべてを選択していない」に切り替えた場合、それはきちんとしていると思いました。
私がこれを行うことを考えている方法は、ContentObServerを登録することです。これは、すべてのアイテムがお気に入りとして設定されているかどうかをチェックするたびに変更されたときはいつでもです。それから私はそれがあまり効率的ではないかもしれないことに気付きました。しかし、他の方法は考えられないので、ヒントはありますか?
データベース内のすべてのアイテムに、フィールドの1つが同じ値に設定されていることをどのようにして知ることができますか(この場合、フィールドお気に入り= 1)?
解決
違いが見つかった場合、「速く中止する」べき(私は信じている)解決策を次に示します。
Selectの異なるまたはグループのように、ソート/個別のフェーズを回避します。このアプローチは、状況によっては非常に遅くなる可能性があります。 sqliteは非常に速いです!また、インデックスがRDMBSパフォーマンスで良い役割を果たすことを忘れないでください.
内側の選択は、複雑さを減らす文字通りの値に置き換えることができます。いずれにせよ、娯楽の場合。
select exists
(select * from t
where val != (select val from t limit 1))
他のヒント
あなたもできます
SELECT FieldName FROM Table GROUP BY FieldName
結果セットに複数の行がある場合、それらは同一ではありません
BasicLifeによる答えへのバリアント: SELECT DISTINCT FieldName FROM Table
所属していません StackOverflow