这个分页选择查询究竟是如何工作的



我是Microsoft SQL Server的新手,我不太喜欢数据库。

我对这个查询有一个疑问(这是在我正在研究的web应用程序的代码中执行的):

SELECT * FROM VulnerabilityAlertDocument WHERE (1=1) ORDER BY Published DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

根据我的理解,这返回给我表中10行的所有字段(根据Published列的值降序排列)

所以在我的web应用程序中,它被用来获得一些页面视图。

例如,我有一个视图,向我显示一个表,在开始包含前10条记录,然后我可以点击"下一步"按钮,查询再次执行,我显示11到20之间的记录,等等…

我的疑问是:为什么如果我执行这个查询到Microsoft SQL Manager Stusio第一次我获得前10条记录,但如果我试图再次执行它,我不获得10到20之间的记录,但我再次获得前10条记录?

你可以在MSDN上找到非常好的SQL Server语法文档:http://technet.microsoft.com/en-us/library/gg699618.aspx

简而言之,OFFSET 0 ROWS表示从第0行开始,如果将偏移量设置为10,则将获得下一组10行:

SELECT * FROM VulnerabilityAlertDocument WHERE (1=1) ORDER BY Published DESC OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;

SQL Server不会跟踪你已经查询的行,这取决于你。

相关内容

  • 没有找到相关文章

最新更新