当前位置: 代码迷 >> SQL >> 遇到一个难题,能不能找个最简单的删除语句实现以上目的
  详细解决方案

遇到一个难题,能不能找个最简单的删除语句实现以上目的

热度:53   发布时间:2016-05-05 12:38:28.0
遇到一个难题,能不能找个最简单的删除语句实现以下目的?
有记录若干,以时间为主键,每次执行删除语句时,只保留最新更新的记录10条,其余删除,用程序的方法可以实现,但是我想找到一条SQL语句能实现这个功能.
------解决方案--------------------
delete from dbo where 时间 not in (select top 10 时间 from  dbo.t2 order by 时间 asc)

------解决方案--------------------
你是什么数据库:

mssql:
delete from 表名 where 时间 not in (select top 10 时间 from  表名 order by 时间 desc)

mysql:
delete from 表名 where 时间 not in (select 时间 from  表名 order by 时间 desc limit 10)

oracle:
delete from 表名 where 时间 not in (select 时间 from (select rownum as rowid,时间 from  表名 order by 时间 desc) where rowid<=10)

------解决方案--------------------
引用:
SQL codedeletefrom dbowhere 时间not in (selecttop10 时间from  dbo.t2orderby 时间asc)

up
------解决方案--------------------
什么数据库?
delete a from tt a left join (select top 10 * from tt order by time desc) b
on a.time=b.time where b.time is null
------解决方案--------------------
delete from yourTable
where mytime < (select min(mytime) from (select top 10 mytime from yourTable order by yourTable desc) t)
  相关解决方案