2014-03-13 25 views
0

我是微軟的新手SQL Server我不是那麼喜歡DB。這個分頁選擇查詢究竟如何工作?

我有與此相關的查詢(即上我工作的一個Web應用程序的代碼中執行)一個疑問:

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

從我明白這回我10所有字段我的表中的行(根據已發佈列的值的值降序排列)

因此,在我的Web應用程序中,它用於獲取某些分頁視圖。

例如,我有一個視圖,向我展示一個表,它在開頭包含前10條記錄,然後我可以單擊「下一步」按鈕,查詢再次執行,並顯示11到20等等...

我的疑問是:爲什麼如果我執行此查詢到Microsoft SQL管理器Stusio我第一次獲得前10條記錄但如果我嘗試再次執行它我不獲得10到20之間的記錄,但我再次獲得前10條記錄?

+0

必須有一些應用程序邏輯。查詢本身每次只能給你10條記錄(在MSSMS中運行)。 – DNac

回答

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不會跟蹤您查詢哪些行,這取決於您。