2011-10-05 23 views
11

我正在編寫一個網頁,以便根據用戶指定的過濾條件交互篩選結果。我只想從SQL返回20行,但我想知道有多少行滿足條件(Count)。我希望能夠告訴用戶:「這裏是符合條件的前20行,順便說一下,我在這裏沒有顯示2,000行額外的行。」你如何選擇TOP x,但仍然得到整個查詢的COUNT?

我知道我可以簡單地運行查詢兩次,但EWWWW昂貴且浪費。如何在不超過數據庫徵稅的情況下實現我想要的目標?

回答

22

您可以使用COUNT(*) OVER()

SELECT TOP 20 *, 
     COUNT(*) OVER() AS TotalMatchingRows 
FROM master..spt_values 
WHERE type='P' 
ORDER BY number 

做兩個查詢可以制定出更有效的但特別是如果你有一個可以在確定匹配的行數可以使用,但不覆蓋整個SELECT列表窄索引。

+1

我是個白癡,你是禪師。 :-)我喜歡SQL專家,沒有裝飾,只是事實。謝謝你,馬丁。 – kingdango

+0

你能澄清你怎麼做兩個疑問? –

相關問題