sql – 没有ORDER BY的ROW_NUMBER
我要在现有查询中添加行号,以便我可以跟踪已添加到Redis中的数据量.如果我的查询失败,那么我可以从该行开始,而不是在其他表中更新.
查询从表中获取1000行之后的数据 SELECT * FROM (SELECT *,ROW_NUMBER() OVER (Order by (select 1)) as rn ) as X where rn > 1000 查询工作正常.如果有任何方式我可以获得行没有不使用order by. 这里选择1是什么? 查询是否已优化,或者我可以通过其他方式执行此操作.请提供更好的解决方案. 解决方法无需担心在ORDER BY表达式中指定常量.以下内容引自Itzik Ben-Gan撰写的 Microsoft SQL Server 2012 High-Performance T-SQL Using Window Functions(可从Microsoft免费电子书网站免费下载):
SELECT actid,tranid,val,ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum FROM dbo.Transactions;
以上意味着当您使用常量排序时不会执行.我强烈建议您阅读本书,因为Itzik Ben-Gan深入介绍了窗口功能的工作原理以及如何在使用时优化各种情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |