如果值大于另一个值,请向MySQL中的行添加值

时间:2019-10-31 01:06:14

标签: mysql sql database

我有一个表Users,其中包含一个唯一的ID,一个整数“ econ”和一些其他不相关的数据。我正在尝试为简单的赌博实施创建SQL语句。我可以访问用户ID,下注金额以及他们可能赢得的金额。我需要验证用户当前所拥有的钱是否超过总赌注,如果是,请将行更新为Users.econ +奖金。 (如果用户输掉了赌注,我只是使用负数作为获胜值)。我可以用几个单独的语句来做到这一点,但我更愿意使用一个,这样我就不必处理交易了。

型号:

用户:id(varchar),econ(整数),其他

当前实现:

  • SQL:用户ID ='xyz'的SELECT econ
  • 逻辑:如果(econ>下注)newEcon = econ +奖金,否则抛出错误
  • SQL:UPDATE用户SET econ = newEcon WHERE id ='xyz'

所需结果:

示例1:

  

用户模型:id:10,econ:300

     

SQL请求:ID:10,下注:200,赢利:300

     

结果:用户:id:10,经济:600

示例2:

  

用户模型:id:5,econ:50

     

SQL请求:id:5,投注:100,奖金:500

     

结果:用户:id:5,经济:50(未更改)

示例3:

  

用户模型:id:12,经济型:200

     

SQL请求:id:12,投注:100,奖金:-100

     

结果:用户:id:12,经济:100

2 个答案:

答案 0 :(得分:1)

此查询有效:

update accbalance set econ = econ + @winnings where id=@id and econ > @bet ;

下次请创建一个sqlfiddle,它可以帮助您。

该查询已在中进行了测试: http://sqlfiddle.com/#!9/960009/1

答案 1 :(得分:1)

您应该能够将比较结果集成到您的UPDATE查询中:

UPDATE users
SET econ = econ + ?
WHERE econ > ? AND id = ?

在这里,我假设您要准备查询,因此使用了占位符,以便使用winningsbetid