我有一个包含以下两个字段的表
jobid | statusCode
现在这是我想要做的,我想“如果 statusCode 小于某个值,则删除具有给定 jobid 的记录,否则使用新的 statusCode 更新此记录”
我的问题是是否有一些单一的 SQL 操作来执行上述工作,或者我是否必须使用多个 SQL “if - else” 类型的查询。我的数据库是 SQlite3
问候, Farrukh Arshad。
我有一个包含以下两个字段的表
jobid | statusCode
现在这是我想要做的,我想“如果 statusCode 小于某个值,则删除具有给定 jobid 的记录,否则使用新的 statusCode 更新此记录”
我的问题是是否有一些单一的 SQL 操作来执行上述工作,或者我是否必须使用多个 SQL “if - else” 类型的查询。我的数据库是 SQlite3
问候, Farrukh Arshad。
SQLite 有一个命令UPDATE OR REPLACE,它结合了更新和插入,但这仅适用于您希望避免插入重复的常见情况。
DELETE命令没有您想要的功能。
SQLite 没有任何控制流语句,因此最好的办法是执行两个 DELETE/UPDATE 语句:
DELETE FROM MyTable
WHERE jobid = ?
AND statusCode < ?;
UPDATE MyTable
SET statusCode = ?
WHERE jobid = ?; -- does nothing if record was deleted
这样的事情应该会有所帮助:
CASE WHEN status_code < some_value
THEN
DELETE FROM MyTable
WHERE jobid = ?
ELSE
UPDATE MyTable
SET statusCode = ?
WHERE jobid = ?
END