【问题标题】:Deleting or Updating SQL Record删除或更新 SQL 记录
【发布时间】:2013-02-07 08:34:48
【问题描述】:

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

jobid |  statusCode

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

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

问候, 法鲁克·阿尔沙德。

【问题讨论】:

  • 只会使用 1 个 if-else

标签: sql sqlite sql-update sql-delete


【解决方案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

【讨论】:

    【解决方案2】:

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

    CASE WHEN status_code < some_value 
    THEN
      DELETE FROM MyTable
      WHERE jobid = ?
    ELSE
      UPDATE MyTable
      SET statusCode = ?
      WHERE jobid = ?
    END
    

    【讨论】:

      猜你喜欢
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多