技术开发 频道

浅谈SQL"简单的"SELECT TOP应注意细节

  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)

 

  这是变相实现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

 

  4、top除了这些还有更多的用处,就比如之前我使用Top N sort 加 apply回答过一个网友的问题

  如何查询某用户近一个月内正确率大于60%的阅读记录,每天只显示符合条件正确率最高的那个

1
 

  在这里我只稍微提一下关于apply 也有很多有意思的细节 今后有时间我会用随笔形式写出来

  最后附上一张关于我用序号表示逻辑查询处理的步骤

1
 

0
相关文章