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
这是我的桌子的样子,但更多的行
你需要像这样的东西 - 一个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
非常感谢你:)它完美的作品 – user3189504
您可以使用SQL Server的OFFSET-FETCH
条款。 OFFSET指定要跳过的行数,FETCH指定在跳过OFFSET中指定的行数之后要选择的行数。
OFFSET-FETCH是SQL Server ** 2012 **中的**新功能**,因此不适用于使用** 2008 **版本的OP ..... –
即时使用Sql Server 2008 – user3189504
-1没有读取标签 –
什么是你的表是什么样子?你有什么疑问,你到底发生了什么问题? –
我知道如何获得前10名,但我不知道如何从sqlserver中接下来的10个元素。在我发布表格之后的秒数 – user3189504