mysql - 在 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';
谢谢你!
解决方案
根据你的要求,你可以做这样的事情(对于 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 是否在当天之后,并且您并不真正关心帐户的类型。
推荐阅读
- c# - lambda 表达式中的三元运算符不适用于空值
- python - Kerastuner:'ValueError: not a legal parameter' 当我使用 LSTM 网络时出现问题,但 Dense 层工作正常
- ldap - 389 目录服务器和权限
- github - Github 通知:明确与一般的“公关审查请求”
- vuejs3 - vue 3 vue-konva:无法读取未定义的属性“组件”
- javascript - 如何解决使用 Webpack 找不到文件的问题?
- azure - 部署后 Azure 功能未出现在功能下
- html - 更改角材料输入文本框的突出显示颜色
- elasticsearch - 使elasticsearch仅返回所有文档的ID
- c# - C# Windows 窗体图形未显示在远程桌面上