我是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不会跟踪你已经查询的行,这取决于你。