【问题标题】:Android Delete QueryAndroid 删除查询
【发布时间】:2011-06-14 00:04:33
【问题描述】:

我正在尝试删除一个表中在另一个表中没有对应 ID 的所有行。由于显然 SQLite 不支持删除中的连接,我正在尝试按照以下方式做一些事情:

    DELETE FROM my_table WHERE my_id NOT IN (SELECT _id FROM my_table2);

但是,我显然不能使用 rawQuery,因为它返回一个游标,所以我必须使用 delete 函数。我在让这个工作时遇到了一些麻烦。这是我正在尝试的查询:

    mDb.delete("my_table", "my_id NOT IN ?", new String[]{"(SELECT _id FROM my_table2)"});

谢谢。

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    正如您所说,您不应该使用 .rawQuery,但您可以使用 .execSQL() 来完成它。我自己经常用它来删除。

    【讨论】:

    • @mah 你能解释一下如何使用 .execSQL 进行删除...我试过它给我抛出了错误。Plz
    • .execSQL 上的文档说“执行一个不是 SELECT/INSERT/UPDATE/DELETE 的单个 SQL 语句。”为什么这仍然适用于这些语句?
    【解决方案2】:

    我认为唯一的方法是执行您的选择并动态组合您的 WHERE 子句。

    【讨论】:

      【解决方案3】:

      您必须使用 execSQL 而不是 rawQuery,因为 rawQuery 用于返回数据的语句,而 execSQL 用于不返回数据的语句,例如 DELETE

      【讨论】:

        猜你喜欢
        • 2011-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-16
        • 2012-07-24
        • 2013-03-16
        • 2012-01-14
        • 2017-07-15
        相关资源
        最近更新 更多