我使用此查詢從表Customers中獲取頁面和索引受限制的結果。例如:Sql服務器返回選擇存儲過程中的行數
如果@iStartIndex = 0和@iRowsPerPage = 10的結果爲0 10行 - 10
SELECT
Name, LastName, City
FROM Customers
OFFSET @iStartIndex ROWS
FETCH NEXT @iRowsPerPage ROWS ONLY
我的問題是,我還需要一些從查詢中的所有行。例如:如果有1000行,查詢將只選擇10行。我需要這10行,但我也需要知道結果中有多少行 - 在這種情況下爲1000行。
我已經試過的是返回@@ ROWCOUNT,但它返回10,最後一個查詢的結果。 我也試着寫一個單獨的查詢:
SELECT COUNT(*)
FROM Customers
和下面我寫了原來的查詢。
是否有一種方法可以返回行,還可以將行數作爲標量值返回到同一存儲過程中?
你必須做兩個查詢,沒有辦法繞過它。如果您喜歡(通過將第一個結果分配給變量)或使用輸出參數,仍然可以將這些查詢組合到一個結果集中。 (從技術上講,你可以在一個查詢中填充第一個查詢中的第一個查詢,但這仍然是後臺的兩個查詢。) –
嗯......如果結果中有10行,你可以解釋10不是正確的號碼?如果您想要獲得客戶總數,則必須將其作爲單獨的查詢(或子查詢)來完成。 –
它可以用窗口聚合來完成,但大多數人報告性能比運行兩個單獨的查詢更差 –