删除或更新SQL记录

时间:2013-02-07 08:34:49

标签: sql sqlite sql-update sql-delete

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

jobid |  statusCode

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

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

此致 Farrukh Arshad。

2 个答案:

答案 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