【问题标题】:How can I use SQL "NOT IN" Operator with Room如何在 Room 中使用 SQL“NOT IN”运算符
【发布时间】:2018-05-30 17:04:46
【问题描述】:
@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);
}

我的目标是来自一个 ids 列表,如果项目 id 属于 ids 列表,我想将所有项目的字段 saved 更新为 true,否则为 false。

为什么第二个查询会产生编译错误?

这是正确的方法吗?

【问题讨论】:

  • 试着把括号括起来:NOT IN (:itemsIds)

标签: android sql android-room android-architecture-components


【解决方案1】:

当你这样做时会发生什么:

@Query("UPDATE items SET saved=:saved WHERE NOT(id IN :itemsIds)") // ERROR??
abstract void method2(List<Long> itemsIds, boolean saved);

【讨论】:

  • 是的,这就是我在 SQL 中使用的方法,只是不确定它对您的情况有什么作用。但是是的,这就是我使用 Not in 的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
相关资源
最近更新 更多