有一张像这样的表:
+----+-------+
| id | Value |
+----+-------+
| 1 | 1000 |
| 2 | 1500 |
| 3 | 1250 |
| 4 | 2000 |
| 5 | 1800 |
+----+-------+
如何更新列"值"同时为一个查询中的那些小于1600的人添加x%,为那些大于此值的人添加y%?有可能吗?
我无法更新最低的第一个,因为最终某些值可能超过1600的范围。这样,当我更新了最大值时,可以在已经收到增加的值中执行此操作。
答案 0 :(得分:2)
您可以使用case
声明:
update table t
set value = value * (case when value < 1600 then 1 + x
when value > 1600 the 1 + y
else 1
end);