BEGIN |
02 |
#Routine
body goes here... |
03 |
/* |
04 |
查询用户超过1000条则进行删除功能 |
05 |
*/ |
06 |
DECLARE act_friends_user_id INT; |
07 |
DECLARE act_friends_min_id INT; |
08 |
DECLARE dn INT default 0; |
09 |
/*定义查询语句*/ |
10 |
DECLARE act CURSOR FOR SELECT user_id FROM act_friends GROUP BY user_idHAVING COUNT(user_id)
> 1000; |
11 |
DECLARE EXIT
HANDLER FOR NOT FOUND set dn=1; |
12 |
/*开始进行循环*/ |
13 |
OPEN act; |
14 |
act_loop:LOOP |
15 |
FETCH act INTO act_friends_user_id; |
16 |
/*循环到最后查找不到条件则跳出这个游标循环*/ |
17 |
if
dn=1 THEN |
18 |
LEAVE
act_loop; |
19 |
END if; |
20 |
/*获取最新1000条数据中的最小ID值*/ |
21 |
select min(id) into act_friends_min_id from (select id fromact_friends where user_id
=act_friends_user_id ORDER BY date DESC limit
1000) astemp; |
22 |
SELECT act_friends_min_id; |
23 |
DELETE FROM act_friends where user_id
= act_friends_user_id AND id
< act_friends_min_id; |
24 |
END LOOP; |
25 |
CLOSE act; |
26 |
END |

本文介绍了一个用于清理数据库中用户关联信息的存储过程。当某个用户的关联记录超过一千条时,该过程将删除超出部分的数据,确保数据库的高效运行。

2972

被折叠的 条评论
为什么被折叠?



