SQLite删除一行

时间:2013-04-27 09:49:32

标签: android sqlite delete-row

我有一个以这种方式定义的SQLite表:

CREATE TABLE Points(value INTEGER, player INTEGER, match INTEGER)

在执行中,我可能有几个相同的列,我想要一个只删除一个,而不是全部,也只保留一个的调用。有没有SQL调用呢?

一个解释自己更清楚的例子:

value player match
1     2      3
1     3      3
1     2      3
2     2      3
1     2      3
1     2      3
1     3      3

db.delete("Points", "value = 1, player = 2, match = 3", null); //pseudo-code for the deletion
db.delete("Points", "value = 1, player = 3, match = 3", null);

value player match
1     2      3
2     2      3
1     2      3
1     2      3
1     3      3

我认为db.delete(“Points”,“value = 1,player = 3,match = 3”,null);将删除与where子句匹配的所有列,对不对?

3 个答案:

答案 0 :(得分:1)

您编写的删除语句确实会删除所有匹配的行。 尝试使用内置列ROWID,读取第一行,保存rowid,然后删除ROWID =您选择的值的位置。

答案 1 :(得分:0)

试试这个

String _val=""+1;
String _player=""+3;
String _match=""+3;

db.delete(TABLE_NAME,"value=? AND player=? AND match=?",new String[]  {_val,_player,_match});

答案 2 :(得分:0)

执行此操作的常用方法是为每个表分配每行的唯一标识符。像这样:

CREATE TABLE Points(Id INTEGER PRIMARY KEY, value INTEGER, player INTEGER, match INTEGER);

然后,您可以使用子查询来查找要删除的行:

DELETE FROM Points WHERE Id =(SELECT MIN(Id) FROM Points WHERE value=1 AND player=2 and match=3);

此示例删除最先输入的最旧记录(最旧的记录具有最低的唯一键ID)