日期:2014-05-17  浏览次数:20446 次

不想要无用的列,关于分页的
with cte as
(select ROW_NUMBER() over (order by id) rownum,* from Idea)
select * from cte
go
--我想用 cte 实现分页
--这个 cte 结果里 rownum 几乎用不上的吧?怎样把它抠出去?
--我希望我的 DataReader 里只有我的表数据,reader[0]即 id - Idea 的第一列。

------解决方案--------------------
如果楼主可以直接以ID列进行分页的话可以直接双TOP解决
SQL code

select top 10 * from (select  top 20 * from Idea order by id asc) a order by id desc

------解决方案--------------------
SQL code

--动态双TOP写法
declare @col varchar(300),@sql varchar(max)
select @col=isnull(@col+',','')+name from syscolumns where id=object_id('Idea')
set @sql='select top 10 '+@col+' from (select  top 20 '+@col+' from Idea order by id asc) a order by id desc'
exec(@sql)