2011-06-14 68 views
3

我试图删除一个表中没有在另一个表中有相应的ID的所有行。因为显然SQLite不支持删除加入我试图沿着这些线路做一些事情:Android删除查询

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

不过,我显然不能用rawQuery因为它返回一个指针,所以我必须使用删除功能。我在解决这个问题上遇到了一些麻烦。以下是我正在尝试的查询:

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

谢谢。

回答

22

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

+0

完美..谢谢!那就是诀窍。 – Nick 2011-06-14 00:43:16

+0

@mah你可以解释一下如何使用.execSQL删除...我试过它会向我抛出错误.Plz – Rauf 2013-09-12 10:24:33

+0

works ..谢谢.. – 2014-05-17 06:31:31

1

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