返回顶部

收藏

sql语句删除指定列重复的记录

更多

场景描述:

我现在有一张存放网页快照的表为m_src_page_version这张表会存在网页的快照,之前是每隔5分钟存在一个新的快照,但是我后来发现快照表增长太快了,每隔5分钟存一个快照也是没有必要的,所以修改为每天只保留一个快照,这样就需要把老数据中每天多余一个快照的记录删除掉。

m_src_page_version表的字段说明如下:

mysql table structrue

成功删除每日多个版本记录,每天只保留一条最新记录的sql语句如下:

delete m_src_page_version.*
from m_src_page_version
 ,
(
select pageId,date(crawlTime) as crawlDate,count(*),max(id) as reservedId from m_src_page_version
    group by pageId,date(crawlTime)
    having count(*) > 1
) as temp
where m_src_page_version.pageId = temp.pageId 
    and date(m_src_page_version.crawlTime) = temp.crawlDate 
    and m_src_page_version.id < temp.reservedId

这个sql涉及到跨表删除,需要借助临时表,首先要把要保留的记录存入临时表,然后在和原表join,删除不符合记录的项。

您可以参考mysql跨表删除的语法说明:

http://outofmemory.cn/code-snippet/1385/Mysql-kuabiao-delete-summary

标签:sql,mysql

收藏

1人收藏

支持

1

反对

0

相关聚客文章
  1. 雪姬 发表 2016-07-06 01:04:34 2016年6月数据库流行度排行榜 SQLite反超Redis
  2. aquan 发表 2012-04-06 09:51:10 批量替换wordpress文章内容
  3. Salley 发表 2014-08-05 08:51:27 MySQL查询脚本分享_分类前十
  4. 博主 发表 2012-08-24 07:00:00 [转]MySQL数据库性能优化之SQL优化
  5. sulong 发表 2010-07-20 13:50:18 一次sql调优
  6. 谢权 发表 2016-01-27 14:17:35 SQL入门练习(二)
  7. JeffJing 发表 2011-04-19 08:12:51 MySQL常用数据表操作SQL
  8. 小丁 发表 2017-02-18 22:39:44 关于日志级别的一些想法
  9. hanze 发表 2017-07-19 15:10:14 linux shell小脚本分享
  10. 尖兵 发表 2018-03-06 15:45:56 mysql报错ERROR 1093
  11. Pangzi 发表 2015-06-06 16:05:58 MySQL中的那些坑
  12. ITJesse 发表 2014-01-05 20:06:56 将SQL Server中的数据导入MySQL

发表评论