我正在尝试删除一个表中没有相应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)"});
感谢。
答案 0 :(得分:23)
您不应该使用.rawQuery,如您所述,但您可以使用.execSQL()来完成它。我经常将它用于删除。
答案 1 :(得分:1)
我认为唯一的方法是执行select并动态组合你的WHERE子句。
答案 2 :(得分:0)
您必须使用execSQL而不是rawQuery,因为rawQuiery用于返回数据的语句,而execSQL用于不返回数据的语句(如DELETE)