Android Sqlite:删除表中的前n条记录(而是删除所有行)

Android Sqlite:删除表中的前n条记录(而是删除所有行),android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在使用以下sql语句删除表中的前5行: DELETE FROM tblname WHERE `id` IN (SELECT `id` FROM tblname ORDER BY `id` ASC LIMIT 5) 它不会删除5行,而是删除所有行 我还尝试了以下变体: DELETE FROM tblname WHERE 'rowid' IN (SELECT 'rowid' FROM tblname ORDER BY 'rowid' ASC LIMIT ?) 我找不到由此产生的任

我正在使用以下sql语句删除表中的前5行:

DELETE FROM tblname WHERE `id`   IN (SELECT `id`   FROM tblname ORDER BY `id`   ASC LIMIT 5)
它不会删除5行,而是删除所有行

我还尝试了以下变体:

DELETE FROM tblname WHERE 'rowid' IN (SELECT 'rowid' FROM tblname ORDER BY 'rowid' ASC LIMIT ?)
我找不到由此产生的任何错误。以下是我用于执行此操作的特定代码:

final SQLiteDatabase db = getWritableDatabase();
final String selectQuery = "DELETE FROM " + TABLE_NAME + " WHERE '_id' IN (SELECT '_id' FROM "+ TABLE_NAME + " ORDER BY '_id' ASC LIMIT 5)";

final Cursor cursor = db.rawQuery(selectQuery, null);

cursor.moveToFirst();
cursor.close();
非常感谢任何指针。

嗯,“\u id”是一个常量字符串文字,而不是主查询和子查询上的列名-因此所有记录都匹配,所有记录都被删除


是sqlite的相关文档。使用_id作为列名标识符不需要任何类型的引号,但如果您想添加一些,请使用双引号。

您确定“_id”应该在单引号中吗?通常,列名周围不带引号。我用一个名为id的整型主键字段创建了一个表,该查询按预期工作:

从tblname中删除,其中id在按id从tblname订单中选择id ASC限制1

但此查询删除了所有内容:


从tblname中删除其中的“id”,按“id”ASC LIMIT 1从tblname订单中选择“id”,谢谢。这就是问题所在。删除了单引号,效果非常好。