加入收藏 | 设为首页 | 会员中心 | 我要投稿 重庆站长网 (https://www.023zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL实用sql语句之删除日志类数据,只保留最近几天的日志数据

发布时间:2022-10-22 13:33:19 所属栏目:MySql教程 来源:互联网
导读: 背景:
在项目开发中,不可避免地会创建日志类的数据表。随着日志类数据的增多,需要定期删除旧的日志数据MySQL 删除数据库,只保留最近的日志数据,以减轻服务器的压力。
例如,项目中有一

背景:

在项目开发中,不可避免地会创建日志类的数据表。随着日志类数据的增多,需要定期删除旧的日志数据MySQL 删除数据库,只保留最近的日志数据,以减轻服务器的压力。

例如,项目中有一张用户表,表名:users,还有一张用户登录数据表,表名:user_login_log。随着user_login_log表数据量的增大,需要我们只保留最近一星期的日志数据。因此我们需要定时将user_login_log表一星期之前的数据删除。

数据表结构:

CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增无符号主键',
  `username` varchar(50) NOT NULL DEFAULT '' COMMENT '用户名',
  `created_at` datetime NOT NULL COMMENT '创建时间',
  `updated_at` datetime NOT NULL COMMENT '最近一次更新时间',

mysql删除表中数据_mysql删除多行数据_MySQL 删除数据库

PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户数据表';

CREATE TABLE `user_login_log` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增无符号主键',
  `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  `login_ip` varchar(50) NOT NULL DEFAULT '' COMMENT '登录IP',
  `created_at` datetime NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户登录数据表';

mysql删除表中数据_MySQL 删除数据库_mysql删除多行数据

用户登录数据表删除7天前的数据sql语句:

-- 1条sql语句实现删除7天前的数据
delete from user_login_log 
where id <= (
  select id from (
    select max(id) as id from user_login_log 
    where date(created_at) <= date(date_sub(now(), interval 7 day))
  ) as a
);

(编辑:重庆站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!