删除或更新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个