遇到一个难题,能不能找个最简单的删除语句实现以下目的?
有记录若干,以时间为主键,每次执行删除语句时,只保留最新更新的记录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)
[解决办法]
delete from yourTablewhere mytime < (select min(mytime) from (select top 10 mytime from yourTable order by yourTable desc) t)