木子屋 Dnawo's BLOG

SQL Server2005获取第N条记录两种方法

👤 dnawo 📅 2012-09-12 👁 4249 👍 0 💬 0 🔄 本站原创
表结构如下,要求取出第2条记录:

Create TABLE Pet
(
	[Id] int identity(1,1) primary key,
	[Name] nvarchar(50)
)

方法一:SQL Server2000经典查询法(TOP)

Select TOP 1 [Name] FROM Pet Where [Id]=(Select max([Id]) FROM Pet Where [Id] in (Select TOP 2 [Id] FROM Pet orDER BY [Id]))

简化版:

Select TOP 1 [Name] FROM Pet Where [Id]=(Select max([Id]) FROM (Select TOP 2 [Id] FROM Pet orDER BY [Id]) as tab)

若N需动态指定,可用sp_executesql:

declare @sql nvarchar(200)
declare @Name nvarchar(50), @Number int
select @Number = 2, @sql = N'Select TOP 1 @Name=[Name] FROM Pet Where [Id]=(Select max([Id]) FROM (Select TOP ' + convert(nvarchar,@Number) + ' [Id] FROM Pet orDER BY [Id]) as tab)'
EXECUTE sp_executesql @sql, N'@Name nvarchar(50) output', @Name output
Select @Name

SQL Server2005增强型TOP(N)法:

Select TOP 1 [Name] FROM Pet Where [Id]=(Select max([Id]) FROM (Select TOP(@Number) [Id] FROM Pet orDER BY [Id]) as tab)

方法二:SQL Server2005新查询法(row_number() over())

Select [Name] FROM (Select (row_number() over(ORDER BY [Id])) as RowNumber,[Name] FROM Pet) as tab Where RowNumber=2

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 Entity Framework添加导航属性运行时提示生成Mod… 下一篇 → ASP.NET MVC3检测客户端请求路径有潜在危险解决方法