问题太抽象!每月订单数量大于或等同于60单以上 select 用户, 月份, count(*) as 数量 from 表 group by 用户, 月份 havnig 数量>=60 用 临时表保存 或 创建视图(view),命名为 结果连续6个月 select *, (select count(*) from 结果 where 用户=t.用户 and 月份>=t.月份 and 月份+6 < t.月份) as 计数 from 结果 t havnig 计数>=6
mysql 建立一个事件,事件的内容为每月订单数量大于或等同于60单以上,用户的身份升级,触发条件为每一个月触发一次 代码如下(若event已启用前两步可跳过): 1.检查event功能 show variables like '%sche%'; 2.启动event功能 set global event_scheduler =1; 3.确定起用event功能后,执行下面的建立event:(开始时间为2016-08-01 00:00:00每1个月执行一次,任务的操作主体是update那部分) create EVENT my_stat_event ON SCHEDULE EVERY 1 MONTH STARTS concat('2016-08-01 00:00:00') on completion preserve ENABLE do begin UPDATE `user` SET vip=(vip+1) WHERE id in (SELECT user_id FROM `order` WHERE FROM_UNIXTIME(pay_time,'%Y%m')=DATE_FORMAT(NOW(), '%Y%m') GROUP BY user_id HAVING COUNT(user_id)>=60); end; user表和order表的结构如图
select 用户, 月份, count(*) as 数量 from 表 group by 用户, 月份 havnig 数量>=60
用 临时表保存 或 创建视图(view),命名为 结果连续6个月
select *, (select count(*) from 结果 where 用户=t.用户 and 月份>=t.月份 and 月份+6 < t.月份) as 计数 from 结果 t havnig 计数>=6
代码如下(若event已启用前两步可跳过):
1.检查event功能
show variables like '%sche%';
2.启动event功能
set global event_scheduler =1;
3.确定起用event功能后,执行下面的建立event:(开始时间为2016-08-01 00:00:00每1个月执行一次,任务的操作主体是update那部分)
create EVENT my_stat_event
ON SCHEDULE
EVERY 1 MONTH
STARTS concat('2016-08-01 00:00:00')
on completion preserve ENABLE
do
begin
UPDATE `user` SET vip=(vip+1) WHERE id in
(SELECT user_id FROM `order` WHERE
FROM_UNIXTIME(pay_time,'%Y%m')=DATE_FORMAT(NOW(), '%Y%m')
GROUP BY user_id HAVING COUNT(user_id)>=60);
end;
user表和order表的结构如图
user 表