删除或更新SQL记录

删除或更新SQL记录,sql,sqlite,sql-update,sql-delete,Sql,Sqlite,Sql Update,Sql Delete,我有一个包含以下两个字段的表 jobid | statusCode 现在,我想做的是“如果statusCode小于某个值,则使用给定的jobid删除reocrd,否则使用新的statusCode更新此记录” 我的问题是,是否有一些单一的SQL操作来执行上述工作,或者我是否必须使用多个SQL“if-else”类查询。我的数据库是SQlite3 问候,, Farrukh Arshad。SQLite有一个结合更新和插入的命令,但这仅适用于希望避免插入重复项的常见情况 该命令没有您想要的功能 SQL

我有一个包含以下两个字段的表

jobid |  statusCode
现在,我想做的是“如果statusCode小于某个值,则使用给定的jobid删除reocrd,否则使用新的statusCode更新此记录”

我的问题是,是否有一些单一的SQL操作来执行上述工作,或者我是否必须使用多个SQL“if-else”类查询。我的数据库是SQlite3

问候,, Farrukh Arshad。

SQLite有一个结合更新和插入的命令,但这仅适用于希望避免插入重复项的常见情况

该命令没有您想要的功能

SQLite没有任何控制流语句,因此最好执行两个DELETE/UPDATE语句:

DELETE FROM MyTable
WHERE jobid = ?
  AND statusCode < ?;

UPDATE MyTable
SET statusCode = ?
WHERE jobid = ?;        -- does nothing if record was deleted
从MyTable中删除
其中jobid=?
和状态代码<?;
更新MyTable
设置statusCode=?
其中jobid=?;--如果记录被删除,则不执行任何操作

类似的内容应该会有所帮助:

CASE WHEN status_code < some_value 
THEN
  DELETE FROM MyTable
  WHERE jobid = ?
ELSE
  UPDATE MyTable
  SET statusCode = ?
  WHERE jobid = ?
END
状态代码<某个值时的情况
然后
从MyTable中删除
其中jobid=?
其他的
更新MyTable
设置statusCode=?
其中jobid=?
结束

如果使用else,则只有1个