首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询模板的分页

SQL查询模板的分页
EN

Stack Overflow用户
提问于 2012-10-23 22:38:19
回答 1查看 124关注 0票数 0

对于我的应用程序,我创建了一个SQL查询生成器,它获得了WhereOrder By子句。我想知道如何通过结果分页,也就是说,我想获得一个模板,说明如何通过SQL查询的结果分页。这种描述可能有点混乱,因此使用一个示例可能更容易:

考虑一下测试表

代码语言:javascript
复制
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'

让我们说,我有一个,其中条款如下:

代码语言:javascript
复制
WHERE  ([Dept] = 'IT')

命令,由条款作为:

代码语言:javascript
复制
ORDER BY [Name] DESC

我试图使用如下方式进行分页:

代码语言:javascript
复制
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以便获得(首先是反转,然后是分页)

弗兰克,德鲁,鲍勃和安迪

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-24 00:28:12

如果将ORDER BY [Name] DESC移动到窗口函数中,您将得到所需的内容:

代码语言:javascript
复制
SELECT [RECORDID], [ID], [Name], [Dept], RowNum  
FROM
(
   SELECT [RECORDID], [ID], [Name], [Dept]
      , ROW_NUMBER() OVER (ORDER BY [Name] DESC) AS RowNum 
   FROM [TestTable] WHERE  ([Dept] = 'IT') 
) AS [TestTable_DerivedTable] 
WHERE [TestTable_DerivedTable].RowNum BETWEEN 3 AND 6
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13040414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档