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 的第一列。
(select ROW_NUMBER() over (order by id) rownum,* from Idea)
select * from cte
go
--我想用 cte 实现分页
--这个 cte 结果里 rownum 几乎用不上的吧?怎样把它抠出去?
--我希望我的 DataReader 里只有我的表数据,reader[0]即 id - Idea 的第一列。
select @col=isnull(@col+',','')+name from sys.columns where obejct_id=object_id('idea')
exec(';with cte as
(select ROW_NUMBER() over (order by id) rownum,* from Idea)
select '+@col+' from cte')
select * from Idea
order by id
好了, 搞那么复杂干吗?
如果lz用的不是控件自己的分页方式的话, 这个rownum 在分页上还是必须要有的。
否则,不知道按照什么来进行分页啊。如果不需要分页处理。 lz只需要将其去掉即可。 参考。
--动态双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)
页面里会用得上 rownum 么?……谁人用过?