Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多行条件更新mySQL入口_Mysql_Database_Conditional - Fatal编程技术网

使用多行条件更新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;