3、有时我想删除数据表里面时间最近的5条数据怎么办
delete 和update使用top的时候不能使用order by
现在我们可以这样来解决
delete zhuisuo
where id in (select top(5) id from zhuisuo order by id desc)
update zhuisuoset name='追索'+name
where id in (select top(5) id from zhuisuo order by id desc)
where id in (select top(5) id from zhuisuo order by id desc)
update zhuisuoset name='追索'+name
where id in (select top(5) id from zhuisuo order by id desc)
这是变相实现Top N sort更新或删除数据 但这不是最优的方法因为这还要根具id去匹配
这时我们可以使用这种方法
with cte_del as
(select top(5) * from zhuisuo order by id desc)
delete from cte_del
with cte_del as
(select top(5) * from zhuisuo order by id desc)
update cte_del set name='追索'+name
(select top(5) * from zhuisuo order by id desc)
delete from cte_del
with cte_del as
(select top(5) * from zhuisuo order by id desc)
update cte_del set name='追索'+name
4、top除了这些还有更多的用处,就比如之前我使用Top N sort 加 apply回答过一个网友的问题
如何查询某用户近一个月内正确率大于60%的阅读记录,每天只显示符合条件正确率最高的那个
在这里我只稍微提一下关于apply 也有很多有意思的细节 今后有时间我会用随笔形式写出来
最后附上一张关于我用序号表示逻辑查询处理的步骤