首页 > 解决方案 > 使用 WHERE 子句 JOIN 更新另一个表

问题描述

我有下表:

习惯

ID INT PRIMARY KEY

NUMBER INT FOREIGN KEY

DATE DATE

DONE BOOL


习惯描述

NUMBER INT PRIMARY KEY

NAME VARCHAR

DESCRIPTION VARCHAR

我想对 HABIT 中的特定行进行更新,其中 HABIT_DESCRIPTION 的名称是 <some_string>

我试过这个:

ContentValues cv = new ContentValues();
    cv.put(HABIT_COL_DONE, true);
    String whereclause = HABIT_DESCRIPTION_NAME+ "='water'";
    return db.update("HABIT",cv,whereclause,null);

标签: javaandroidsqliteandroid-sqlitesqliteopenhelper

解决方案


由于SQLite不支持UPDATE语句中的连接,您可以使用EXISTS

String whereclause = 
    "EXISTS (SELECT 1 FROM HABIT_DESCRIPTION WHERE NUMBER = HABIT.NUMBER AND DESCRIPTION = ?)";
String param = "water";
return db.update("HABIT", cv, whereclause, new String[] {param});

推荐阅读