条件更新mySQL使用多行

时间:2018-01-30 20:46:38

标签: mysql database conditional

所以我有一个数据库,其列为:nameuidpoints。 基本上我想在100之前减少一个条目的积分,但仅限于points > 100。但与此同时,我想在100之前增加另一个条目的分数,但也只在第一个条目上增加points > 100

IF <user1_points > 100> : Increase user2_points by 100, decrease user1_points by 100
ELSE: do nothing

我试过环顾四周,但我找不到一个好的解决方案(只有一些EXISTS,或者不是mySQL/InnoDB,但我需要一个特定的条件)

我的数据库如下所示:

| name | uid | points |
|------+-----+--------|
| Foo  |  1  |  100   |
|------+-----+--------|
| Bar  |  2  |  200   |
|------+-----+--------|

我的预期结果是:

| name | uid | points |
|------+-----+--------|
| Foo  |  1  |  200   |
|------+-----+--------|
| Bar  |  2  |  100   |
|------+-----+--------|

但仅限于points(uid=1) > 100。否则就什么都不做。

我基本上是在寻找表达短语(伪代码)的方法:

IF uid=2.points >= 100 THEN SET uid=1.points += 100 AND uid=1.points -= 100

1 个答案:

答案 0 :(得分:1)

我认为你只是期待UPDATE某些领域。

试试这个语法:

UPDATE table_name
SET points = points + 100
WHERE points > 100
AND some_condition;

同样,当它符合您的其他条件时,您可以减去这些点

UPDATE table_name
SET points = points - 100
WHERE points > 100
AND some_other_condition;

更多信息: https://www.w3schools.com/sql/sql_update.asp