2

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

jobid |  statusCode

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

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

问候, Farrukh Arshad。

4

2 回答 2

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
于 2013-02-07T08:42:02.737 回答
0

这样的事情应该会有所帮助:

CASE WHEN status_code < some_value 
THEN
  DELETE FROM MyTable
  WHERE jobid = ?
ELSE
  UPDATE MyTable
  SET statusCode = ?
  WHERE jobid = ?
END
于 2013-02-07T08:50:27.010 回答