我有一个包含以下两个字段的表
jobid | statusCode
现在这就是我想要做的事情,我想“如果statusCode小于某个值,则用给定的jobid删除reocrd,否则用新的statusCode更新此记录”
我的问题是是否有一些单独的SQL操作来执行上述工作,或者我必须使用多个SQL“if - else”类型的查询。我的DB是SQlite3
此致 Farrukh Arshad。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
这样的事情应该会有所帮助:
CASE WHEN status_code < some_value
THEN
DELETE FROM MyTable
WHERE jobid = ?
ELSE
UPDATE MyTable
SET statusCode = ?
WHERE jobid = ?
END