在MySQL更新中添加If语句

时间:2019-04-04 17:39:41

标签: mysql phpmyadmin mamp

我是MySQL的新手,我有一个计划在星期一到期。 我在尝试添加查询/触发器以执行以下操作时遇到问题:

我的项目breif说:“客户注册后,他们将在30天免费试用期内为客户服务,然后付款” 因此,我正在尝试(但没有通过)添加一些方法来检查帐户是否已注册30天,如果已注册,则帐户类型将更改为“付费订阅”,否则将保留为“免费试用” < / p>

我可以分开工作,但不能一起工作。

这是我的桌子:

 customer_id varchar (100) NOT NULL,
  first_name varchar (20) not null,
  last_name varchar (20) not null,
  phone_no varchar (20) not null,
  email_address varchar (20) not null,
  address varchar (100) not null,
  city varchar (20) not null,
  country varchar (20) not null,
  date_of_registration date,
  account_type varchar (20) not null,
  PRIMARY KEY (customer_id)
  ) DATA DIRECTORY='c:/mamp';

谢谢!

1 个答案:

答案 0 :(得分:1)

根据您的要求,您可以执行以下操作(针对IF的语法)

SELECT 
    first_name, last_name, email_address,
    IF(NOW() > date_of_registration + INTERVAL 30 DAY, 'paid', 'free') as status
FROM users WHERE id = XX

当然,请选择所需的字段,并根据需要调整WHERE子句。 您将拥有一个状态值,其中包含“已付费”或“免费”

!!!但是!从逻辑的角度来看,这可能不是您想要的。实际上,如果帐户的使用期限超过30天,则先前的查询将返回“已付款”。之后,您必须在处理中检查account_type。

我建议您添加一个available_until字段:

  • 用户注册=> account_type =“免费”,available_until = NOW()+ 30天

如果用户在30天内付款。 付款后,SET account_type =“已付款”,available_until = {您想要的时间}

您现在只需检查帐户available_until是否在当天之后,并且您实际上并不关心帐户的类型。