mysql定时任务

本文分享了在MySQL中使用定时任务自动更新积分排名的方法,通过巧妙设计的SQL语句,实现了党员用户积分榜的每日自动刷新。文章揭示了一个常见问题:在UPDATE语句中直接引用子查询的别名字段与通过表别名引用的区别,为读者提供了宝贵的实战经验。
摘要由CSDN通过智能技术生成
-- 定时任务创建
CREATE EVENT IF NOT EXISTS 
	rank_by_integral_all 
-- 定时任务执行规则
ON SCHEDULE 
	EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE,'00:02:30')
-- 永久执行还是执行一次
ON COMPLETION  PRESERVE
-- 是否创建后立即生效
ENABLE 
-- 注释
COMMENT '总积分排行榜定时任务'
-- 定时任务执行语句
DO 
	UPDATE 
		d_user 
	INNER JOIN
	(
		SELECT 
			(@rowNo:=@rowNo+1) AS rowno,a.id AS temp_id
		FROM
			(SELECT id,integral_all FROM d_user t WHERE t.`type`='党员' ORDER BY t.integral_all DESC,t.id ASC) a,
			(SELECT @rowNo:=0) b
	) AS temp 
		ON temp_id=d_user.`id`
	SET d_user.`rank`=rowno

这期间遇见一个问题就是我直接用临时表的rowno和temp_id每问题。如果用temp.temp_id和temp.rowno则会报错,说找不到该字段,我想原因应该是mysql update语句执行顺序的问题造成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值