我有一个表Users,其中包含一个唯一的ID,一个整数“ econ”和一些其他不相关的数据。我正在尝试为简单的赌博实施创建SQL语句。我可以访问用户ID,下注金额以及他们可能赢得的金额。我需要验证用户当前所拥有的钱是否超过总赌注,如果是,请将行更新为Users.econ +奖金。 (如果用户输掉了赌注,我只是使用负数作为获胜值)。我可以用几个单独的语句来做到这一点,但我更愿意使用一个,这样我就不必处理交易了。
用户:id(varchar),econ(整数),其他
示例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
答案 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 = ?
在这里,我假设您要准备查询,因此使用了占位符,以便使用winnings
,bet
和id