使用多行条件更新mySQL入口
因此,我有一个数据库,它有以下列:使用多行条件更新mySQL入口,mysql,database,conditional,Mysql,Database,Conditional,因此,我有一个数据库,它有以下列:name、uid和points。 基本上,我想将一个条目上的点数减少100,但前提是点数>100。但同时,我想将另一个条目上的分数增加100,但也仅当第一个条目上的points>100时 IF <user1_points > 100> : Increase user2_points by 100, decrease user1_points by 100 ELSE: do nothing 我的预期结果是: | name | uid | poi
name
、uid
和points
。
基本上,我想将一个条目上的点数减少100
,但前提是点数>100
。但同时,我想将另一个条目上的分数增加100
,但也仅当第一个条目上的points>100
时
IF <user1_points > 100> : Increase user2_points by 100, decrease user1_points by 100
ELSE: do nothing
我的预期结果是:
| name | uid | points |
|------+-----+--------|
| Foo | 1 | 200 |
|------+-----+--------|
| Bar | 2 | 100 |
|------+-----+--------|
但仅当点(uid=1)>100时
。否则什么也不做
我基本上是在寻找合适的方式来表达这个短语(伪代码):
如果uid=2.points>=100,则设置uid=1.points+=100和uid=1.points-=100
我想您只是想更新某些字段
请尝试以下语法:
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;
详情如下:
更新您的问题添加适当的数据样本和预期结果。
这就是问题所在。如何从WHERE子句中的另一行进行选择?因为我基本上需要说points(uid=1)=points(uid=1)+100
和points(uid=2)=points(uid=2)-100
你的情况是什么?还有name='Foo',所以基本上最好的方法就是调用两个查询?但是,我仍然必须按UID列调用行。那么我该如何说update。。。设置点=点+100如果点>100,其中uid=2
?我真的想不出一个表达的方法
UPDATE table_name
SET points = points - 100
WHERE points > 100
AND some_other_condition;