2012-03-28 222 views
2

我想建立一個查詢,將這樣做: 可以說,例如我有100個記錄在表中。我有調用查詢的.net表單。我有一個查詢字符串參數pageindex,如http://mysite.com?id=2。 現在我想要做的是如果id = NULL,那麼從該表中獲得第一組記錄,1到20的id表示從1到20,如果id = 2,則從行獲得第二組記錄20到40,如果id = 3,則從該表中獲得第三組記錄,意思是從40到60的記錄。
我想知道這是否可能。 感謝很多提前,LazialeSQL查詢選擇

+1

你目前的頁面是什麼樣的,你的數據庫代碼現在是什麼樣的? – 2012-03-28 23:05:29

+0

[Paging in SQL Server](http://www.codeguru.com/csharp/.net/net_data/article.php/c19611/Paging-in-SQL-Server-2005.htm) – 2012-03-28 23:06:58

回答

0

如果你把它當作你這麼說,而ID是從1到100線,你可以做

@Page是頁面數(0基地)

SELECT TOP 20 * FROM MyTable WHERE (ID > @Page*20) ORDER BY ID 

如果您希望使用SQL MS的尋呼風格和ID是不符合你可以做

WITH NewTable AS (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber FROM MyTable) 
SELECT TOP 20 * FROM NewTable WHERE (RowNumber > @Page*20) 

參考: http://msdn.microsoft.com/en-us/library/ms186734.aspx

http://msdn.microsoft.com/en-us/library/ms175972.aspx

0
SELECT col1, col2 
FROM (
    SELECT col1, col2, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum 
    FROM MyTable 
) AS MyDerivedTable 
WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow 

通過「MSSQL限價抵消」搜索隊列從Row Offset in SQL Server拍攝,第一個結果在谷歌。

+0

問題不在於詢問MySQL的。你如何在SQL Server中做到這一點? – 2012-03-28 23:19:04

+0

更新了答案。 – iehrlich 2012-03-28 23:22:54