减法后SQL设置为零

时间:2015-10-05 20:05:23

标签: sql sql-update

我正在编写一个要从列中减去的脚本,如果结果小于0则将其设置为零。 到目前为止,我有

UPDATE [table01] SET [c1] = [c1] - ? WHERE [id] = ?
UPDATE [table01] SET [c1] = 0 WHERE [id] = ? AND [c1] < 0

有没有办法缩短上面的内容以便它减去然后如果列小于0则设置为0,而不是跨越两个UPDATE语句?

2 个答案:

答案 0 :(得分:3)

根据你分享的SQL,这似乎是MS SQL-Server,遗憾的是,它没有least函数。但是,您仍然可以使用case表达式实现相同的行为:

UPDATE [table01] 
SET    [c1] = CASE WHEN [c1] > ? THEN [c1] - ? -- Both ?s set with the same value
                   ELSE 0
              END
WHERE  [id] = ?

答案 1 :(得分:1)

CASE声明。与其他答案相同的结果,只是重新排列了逻辑

UPDATE [table01] 
SET [c1] = CASE WHEN [c1] - ? < 0 THEN 0 ELSE [c1] - ? END
WHERE [id] = ?