2012-05-15 54 views
0

例如,我的表中有10.000條記錄。每次執行查詢時,我都會將頁碼n作爲參數。而且我必須從nn*100中選擇記錄,這些記錄滿足一些複雜的條件。我也使用ORDER BY,所以我不能保留最後一個元素的PrimaryKey,並使用主鍵選擇頂部的n記錄。我怎樣才能做到這一點?從n1到n2中選擇記錄

+0

所以你問如何實現分頁與'100'頁面大小? – Yuck

+0

是)))。問題是OrderBy。如果不使用它,我能夠實現分頁。 – superM

+0

你正在使用哪個數據庫?你如何訪問它?雖然你可以在SQL中做到這一點,但它可能在應用程序級別上做得更好。例如,在Excel/VBA中,可以設置SQL連接以允許結果集向前和向後移動。 –

回答

4

在頁面計算的基礎上,在以下查詢中傳遞From和To參數的值。

WITH NumberedMyTable AS 
(
    SELECT 
     *, 
     ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber 
    FROM 
     MyTable 
) 
SELECT 
    * 
FROM 
    NumberedMyTable 
WHERE 
    RowNumber BETWEEN @From AND @To 
+0

簡單查詢:) – kbvishnu

1
declare @n int 
set @n=2 

with my_query as(
    select ROW_NUMBER() over (order by name) as ID, * 
    from sys.tables 
) 
select * 
from my_query 
where ID >[email protected] and ID<=(@n*10)