我如何使用 SQL "NOT IN" 运算符与 Room
How can I use SQL "NOT IN" Operator with Room
@Query("UPDATE items SET saved=:saved WHERE id IN :itemsIds") // works
abstract void method1(List<Long> itemsIds, boolean saved);
@Query("UPDATE items SET saved=:saved WHERE id NOT IN :itemsIds") // ERROR!!
abstract void method2(List<Long> itemsIds, boolean saved);
@Transaction
void updatePreferredItems(@NonNull List<Long> prefItems) {
method1(prefItems, true);
method2(prefItems, false);
}
我的 objective 来自 ids 列表 如果项目 id 属于 ids 列表,我想将所有项目的 saved 字段更新为 true,否则为 false否则。
为什么第二个查询生成编译错误?
这是正确的方法吗?
当你这样做时会发生什么:
@Query("UPDATE items SET saved=:saved WHERE NOT(id IN :itemsIds)") // ERROR??
abstract void method2(List<Long> itemsIds, boolean saved);
@Query("UPDATE items SET saved=:saved WHERE id IN :itemsIds") // works
abstract void method1(List<Long> itemsIds, boolean saved);
@Query("UPDATE items SET saved=:saved WHERE id NOT IN :itemsIds") // ERROR!!
abstract void method2(List<Long> itemsIds, boolean saved);
@Transaction
void updatePreferredItems(@NonNull List<Long> prefItems) {
method1(prefItems, true);
method2(prefItems, false);
}
我的 objective 来自 ids 列表 如果项目 id 属于 ids 列表,我想将所有项目的 saved 字段更新为 true,否则为 false否则。
为什么第二个查询生成编译错误?
这是正确的方法吗?
当你这样做时会发生什么:
@Query("UPDATE items SET saved=:saved WHERE NOT(id IN :itemsIds)") // ERROR??
abstract void method2(List<Long> itemsIds, boolean saved);