Java Android Sqlite仅更新第一行
我只需要更新特定sql查询命令的第一行 我的代码是:Java Android Sqlite仅更新第一行,java,android,sql,android-sqlite,Java,Android,Sql,Android Sqlite,我只需要更新特定sql查询命令的第一行 我的代码是: SQLiteDatabase db = this.getWritableDatabase(); String strSQL = "UPDATE table SET column = something WHERE name = john AND age = 10"; db.execSQL(strSQL); 我有5个结果,它们的标准是name=john和10岁 这可以更新最后一项,但是我希望它只更新WHERE子句的第一行结果
SQLiteDatabase db = this.getWritableDatabase();
String strSQL = "UPDATE table SET column = something WHERE name = john AND age = 10";
db.execSQL(strSQL);
我有5个结果,它们的标准是name=john和10岁
这可以更新最后一项,但是我希望它只更新WHERE子句的第一行结果。这怎么可能呢?试试这个:
String strSQL = "UPDATE table SET column = something WHERE id IN (SELECT id FROM table WHERE name = john AND age = 10 LIMIT 1)";
如果id是PK,请重试
UPDATE table
SET column = something
WHERE id = (SELECT min(t2.id)
FROM table t2
WHERE t2.name = 'john' AND t2.age = 10)
第一:
在本例中,如果只想更新第一行,则在表中再添加一个参数。它将帮助您找到唯一的记录
第二:
不要像这样使用更新查询
String strSQL = "UPDATE table SET column = something WHERE name = john AND age = 10";
改为这样做最好使用一个唯一的列来标识您的用户,并更新第一个项目游标。moveToFirst;我应该已经为每个用户提供了唯一的id,但我只是在我的问题中提供了一个示例。是否有一种方法可以从一行更新行,而不是创建游标并更新第一行?然后使用limit,就像答案所说的那样不起作用…不要编写原始查询,使用limit查找项,然后使用yourdb.updatetablename、contentvalues、where、where、Wherergs[]要像这样进行更新,android.database.sqlite.SQLiteException:near LIMIT:语法错误代码1:在sqlite中使用带更新的LIMIT需要创建sqlite3.c合并的自定义版本,并在sqlite3-src-XXXXXX.zip发行版中向配置脚本传递-启用更新限制,使用打开SQLITE\u ENABLE\u UPDATE\u DELETE\u LIMIT的特定选项编译,顺便说一句。可能不是android提供的选项。@MoDev我修改了我的答案。不要编写原始查询,使用LIMIT查找该项,然后使用yourdb.updatetablename、contentvalues、where、where rgs[]进行更新,我相信它是有效的!但是,我有另一个问题,它阻止了应用更改。谢谢你的解决方案。