首页 > 解决方案 > 在 MySQL 的更新中添加 If 语句

问题描述

我对 MySQL 很陌生,我有一个项目要在星期一到期。我在尝试添加查询/触发器来执行以下操作时遇到问题:

我的项目 breif 声明“当客户注册时,他们会收到 30 天的客户服务免费试用期,之后他们会付款”所以我正在尝试(但失败)添加一些内容来检查帐户是否已注册 30 天,如果有,帐户类型将更改为“付费订阅”,否则将保持为“免费试用”

我可以让它单独工作,但不能一起工作。

这是我的桌子:

 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';

谢谢你!

标签: mysqlphpmyadminmamp

解决方案


根据你的要求,你可以做这样的事情(对于 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 = "free", available_until = NOW() + 30d

如果用户在 30 天内付款。付款后,SET account_type = "paid" and available_until = {time you want}

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


推荐阅读