所以我有一个数据库,其列为:name
,uid
和points
。
基本上我想在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
答案 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;