0
對於我的應用程序創建一個SQL查詢生成器已得到當和順序按條款。我想知道如何對結果進行分頁,即我想獲得有關如何通過SQL查詢結果分頁的模板。這說明可能是有點混亂,所以它可能是用一個例子更容易:分頁的SQL查詢模板
考慮測試表
CREATE TABLE [dbo].[TestTable](
[RecordID] [int] NOT NULL,
[ID] [nvarchar](1000) NULL,
[Name] [nvarchar](1000) NULL,
[Dept] [nvarchar](1000) NULL
)
INSERT [dbo].[TestTable]
SELECT 1, N'1', N'Andy', N'IT'
UNION ALL
SELECT 2, N'2', N'Bob', N'IT'
UNION ALL
SELECT 3, N'3', N'Camila', N'Sales'
UNION ALL
SELECT 4, N'4', N'Drew', N'IT'
UNION ALL
SELECT 5, N'5', N'Elsie', N'Sales'
UNION ALL
SELECT 6, N'6', N'Frank', N'IT'
UNION ALL
SELECT 7, N'7', N'Gaby', N'Sales'
UNION ALL
SELECT 8, N'8', N'Hank', N'IT'
UNION ALL
SELECT 9, N'9', N'Iris', N'Sales'
UNION ALL
SELECT 10, N'8', N'John', N'IT'
讓我們說,我有一個凡條款爲:
WHERE ([Dept] = 'IT')
而一個順序按條款爲:
ORDER BY [Name] DESC
我試圖通過使用類似做分頁:
SELECT [RECORDID], [ID], [Name], [Dept], RowNum
FROM (
SELECT [RECORDID], [ID], [Name], [Dept],
ROW_NUMBER() OVER (ORDER BY [RecordID]) AS RowNum
FROM [TestTable] WHERE ([Dept] = 'IT')
) AS [TestTable_DerivedTable]
WHERE [TestTable_DerivedTable].RowNum BETWEEN 3 AND 6 ORDER BY [Name] DESC
這不工作,因爲我不能讓ORDER BY [Name] DESC
進入[TestTable_DerivedTable]
。 如果我剛結束了WHERE子句,它將返回名稱:
安迪,鮑勃,德魯,弗蘭克,漢克和約翰。
如果我把分頁即3至6,我正確地得到:
德魯,弗蘭克,漢克和約翰
如何添加ORDER BY [Name] DESC
讓我得到(首先逆轉,然後分頁):
弗蘭克,德魯,Bob和安迪
謝謝** **亞當爲我工作。 –