Android SQLite删除一行

Android SQLite删除一行,android,sqlite,delete-row,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

我有一个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子句匹配的列,对吗?

试试这个

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

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

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

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

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

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

通常的方法是为每个表的每一行分配一个唯一的标识符。像这样:

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)

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

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)

关于“限制1”如何?不知道该语句。我会试试看它是否有效。非常感谢你!“限制1”呢?我不知道这句话。我会试试看它是否有效。非常感谢你!这不会删除所有值为1、玩家为3和匹配为3的列吗?这不会删除所有值为1、玩家为3和匹配为3的列吗?我曾想过这一点,但我希望会有一种“更简单”的方法或SQL语句来做到这一点。谢谢你的回答。在与LIMIT 1子句(在SQLite中未启用)进行斗争之后,我正在尝试这种方法。我曾经考虑过这一点,但我希望会有一种“更简单”的方法或SQL语句来做到这一点。谢谢你的回答。在与LIMIT 1子句(在SQLite中未启用)斗争之后,我正在尝试这种方法。