代码之家  ›  专栏  ›  技术社区  ›  M'hamed

如何使用SQL“不在”运算符

  •  0
  • M'hamed  · 技术社区  · 7 年前
    @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);
    }
    

    我的目标是从一个id列表中更新字段 保存的 如果项ID属于ID列表,则所有项中的项都为true,否则为false。

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

    这是正确的方法吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   DeFlanko    7 年前

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

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