我是微软 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之间的记录,所以再次......
我的疑问是:如果我在第一次获得前10条记录时将此查询执行到 Microsoft SQL Manager Stusio ,但如果我再次尝试执行它,我就不会获得10到20之间的记录,但我再次获得前10个记录?
答案 0 :(得分:1)
您可以在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无法跟踪您查询的行,这取决于您。