带OR的MySql更新查询

时间:2014-06-09 17:31:40

标签: mysql sql

我得到了这个存储购买的表格,我让我的网站在注册时为用户添加免费试用3天。

我得到了每24小时运行一次的cron工作,但是如果用户在他正在接受试用期间购买,则会出现问题。

我的查询:

UPDATE subscriptions SET days = days - 1 WHERE days > 0 AND (package="1month" OR package="3month" OR package="trial")

因此,如果用户获得了有效的试用和活跃的1个月会员资格,此查询将更新试用版和1个月订阅,此时它应仅更新一个订阅。

Sqlfiddle:http://sqlfiddle.com/#!2/74fb6/1

我怎么做?

1 个答案:

答案 0 :(得分:0)

由于您说it should update only one subscription at the time,您应该在表格中查看UIDpackage(虽然目前UID看起来不像是唯一列它应该是)

UPDATE subscriptions 
SET days = days - 1 
WHERE days > 0 
AND 
package = "1month"
AND
UID = 1