SQL Server从数据库中获得一组10个元素

问题描述:

我正在为电视开发EPG。我需要在每个页面中显示10个频道的epg。我需要从SQL Server获取数据。打电话给服务器从0 - 9获得渠道比用户可能决定更换页面,对于我来说意味着我应该拨打另一个电话到服务器以获得渠道从10 - 19,下一页20 - 29等。问题是如何获得像SQL Server那样的组数据?SQL Server从数据库中获得一组10个元素

id channelNr description shortname starttime andtime 
0 100  desc1  tv1  10:10:00 10:40:00 
1 101  desc2  tv2  10:40:00 12:40:00 

这是我的桌子的样子,但更多的行

+0

什么是你的表是什么样子?你有什么疑问,你到底发生了什么问题? –

+0

我知道如何获得前10名,但我不知道如何从sqlserver中接下来的10个元素。在我发布表格之后的秒数 – user3189504

你需要像这样的东西 - 一个CTE(公用表表达式),它返回你需要的数据,另外还有一个RowNum列,它定义了一个行号;那么你可以随便挑WHERE RowNum BETWEEN 0 AND 9第一,然后WHERE RowNum BETWEEN 10 AND 19第二页等

既然你要选择第10个行,那RowNum列必须有一定的排序标准 - 例如你的“频道号码”或任何对你有意义的东西(我只是选择BirthDate DESC作为演示)。

此示例这里是基于AdventureWorks示例数据库 - 你需要以使其适应自己的需要和你的表/列:

;WITH PagedResults AS 
(
    SELECT 
     e.BusinessEntityID , 
     e.NationalIDNumber , 
     e.OrganizationLevel , 
     e.JobTitle , 
     e.BirthDate , 
     e.HireDate , 
     RowNum = ROW_NUMBER() OVER(ORDER BY BirthDate DESC) 
    FROM 
     HumanResources.Employee e 
) 
SELECT 
    * 
FROM  
    PagedResults 
WHERE 
    RowNum BETWEEN 0 AND 9 
+0

非常感谢你:)它完美的作品 – user3189504

您可以使用SQL Server的OFFSET-FETCH条款。 OFFSET指定要跳过的行数,FETCH指定在跳过OFFSET中指定的行数之后要选择的行数。

+2

OFFSET-FETCH是SQL Server ** 2012 **中的**新功能**,因此不适用于使用** 2008 **版本的OP ..... –

+0

即时使用Sql Server 2008 – user3189504

+1

-1没有读取标签 –