求SQL语句:当表的数据大于100条时,删除前10条(根据时间排序)

kenny_hwei 2013-06-19 05:18:45
注意是SQL语句,不是存储过程。

if (select count(*) from my_table) > 100) --这里什么写?
with t as (select top 10 * from my_table order by in_time desc) delete from t --这里是删除前10条记录
...全文
1490 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dw_chaoyue 2013-07-02
  • 打赏
  • 举报
回复
版主试下这个 delete D from (select top 10 * from my_table order by in_time desc) as D 应该可以的 
dw_chaoyue 2013-06-30
  • 打赏
  • 举报
回复
你的这个还真的无法实现, 现在sqlserver2008 支持delete top (10) from table_Name 但是它不能按照in_time 排序删除数据, 数据引擎按照读取的顺序,删除最先读到前10条数据
kenny_hwei 2013-06-20
  • 打赏
  • 举报
回复
自己顶。。。。。哪位大哥写过类似的语句啊?
pianpianpian 2013-06-20
  • 打赏
  • 举报
回复
上面意思领会错了,单基本是这个方法吧
pianpianpian 2013-06-20
  • 打赏
  • 举报
回复
这样必须要有主键才好实现,有自增ID也可以 delete from table where 主键 not in (select top 100 主键 from table order by 日期列 desc )
kenny_hwei 2013-06-19
  • 打赏
  • 举报
回复
还不行呢, 1行,;附近有错误
唐诗三百首 2013-06-19
  • 打赏
  • 举报
回复

if ((select count(*) from my_table)>100)
;with t as 
(select top 10 * 
 from my_table 
 order by in_time desc) 
delete from t;
kenny_hwei 2013-06-19
  • 打赏
  • 举报
回复
不行你,这个表,没有主键也没有索引
Leon_He2014 2013-06-19
  • 打赏
  • 举报
回复

if (select count(*) from my_table) > 100)

delete 
from my_table
where id in
(select top 10 id from my_table order by in_time desc) 

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧