我正在编写一个要从列中减去的脚本,如果结果小于0则将其设置为零。 到目前为止,我有
UPDATE [table01] SET [c1] = [c1] - ? WHERE [id] = ?
UPDATE [table01] SET [c1] = 0 WHERE [id] = ? AND [c1] < 0
有没有办法缩短上面的内容以便它减去然后如果列小于0则设置为0,而不是跨越两个UPDATE
语句?
答案 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] = ?