首页 > 社交 > 科普中国

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

常驻编辑 科普中国 2022-07-13 语句   数据   日志   数据表   符号   星期   结构   时间   项目   用户

背景:GNB拜客生活常识网

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

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

数据表结构:GNB拜客生活常识网

  • users表结构:
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 '最近一次更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户数据表';
  • user_login_log表结构:
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='用户登录数据表';

用户登录数据表删除7天前的数据sql语句:GNB拜客生活常识网

-- 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
);

相关阅读:

  • 心情不好?那就读宫崎骏的经典语句吧,让你在崩溃中自愈
  • ABB机器人Compact
  • 我做开发测试犯的错
  • 精美的语句文案,励志的正能量说说
  • 关于田径语句
  • 20句情感语句,经典动人
  • 经典伤感人生语句
  • mysql数据库怎么查询数据库是否存在?
  • 「大数据」
  • 每日励志语句
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。