如何在MySQL中的一个查询中进行两次更新?

时间:2015-04-13 14:04:13

标签: mysql

有一张像这样的表:

+----+-------+
| id | Value |
+----+-------+
|  1 |  1000 |
|  2 |  1500 |
|  3 |  1250 |
|  4 |  2000 |
|  5 |  1800 |
+----+-------+

如何更新列"值"同时为一个查询中的那些小于1600的人添加x%,为那些大于此值的人添加y%?有可能吗?

我无法更新最低的第一个,因为最终某些值可能超过1600的范围。这样,当我更新了最大值时,可以在已经收到增加的值中执行此操作。

1 个答案:

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