row_number分页查询去掉新生产的ROWID列

沐NeMo 2015-10-28 03:04:25
Select T.* From
(Select Row_number() over (order by (select 1) ) AS RowID , tblName.* From tblName) AS T
Where RowID Between 1 and 200

查询出来的表多了第一列:RowID ,想去掉这一列怎么写法?
Order By 里面(Select 1) 或者 (Select 0)结果一样。是为了不排序。直接查询原始表。

谢谢!
...全文
234 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2015-10-29
  • 打赏
  • 举报
回复
引用 8 楼 kidbuu 的回复:
声明一个变量@sql,借助sys.columns把语句组合好放到@sql里,然后sp_executesql @sql完事
这个做法完善一点,封装成一个存储过程 最好再加入我3楼的考虑。。。
yooq_csdn 2015-10-29
  • 打赏
  • 举报
回复
引用 7 楼 linjimu 的回复:
回四、五楼:再加一层,怎么加法,我是为了不写字段名,因为每个表字段名都不一样,个数也不一样,才想要用*,但是多了一列RowID。 回六楼:测试了,错误提示说,窗口函数只能在Select 或者 Order By 里面使用。

select T.*
from (
Select 这里把你想要的字段列出来  From 
(Select Row_number() over (order by (select 1) ) AS RowID , tblName.*  From tblName) AS T 
Where RowID Between 1 and 200) T

kidbuu 2015-10-28
  • 打赏
  • 举报
回复
声明一个变量@sql,借助sys.columns把语句组合好放到@sql里,然后sp_executesql @sql完事
沐NeMo 2015-10-28
  • 打赏
  • 举报
回复
回四、五楼:再加一层,怎么加法,我是为了不写字段名,因为每个表字段名都不一样,个数也不一样,才想要用*,但是多了一列RowID。 回六楼:测试了,错误提示说,窗口函数只能在Select 或者 Order By 里面使用。
haitao 2015-10-28
  • 打赏
  • 举报
回复
试一试这个语法能否通过:
Select tblName.*  From tblName
where
Row_number() over (order by fieldxxx ) Between 1 and 200
卖水果的net 版主 2015-10-28
  • 打赏
  • 举报
回复
去不掉的,不过可以按 4#的方法再加一层。 或者,把这个 RowID 放在最后,这样看着就舒服多了。
yooq_csdn 2015-10-28
  • 打赏
  • 举报
回复
引用 2 楼 linjimu 的回复:
我是写在一个公用的函数里面,只能用*,否则每次调用都得知道表的所查字段名。
那就把* 改成你要的字段后 在外面再套一层 select * from ()
haitao 2015-10-28
  • 打赏
  • 举报
回复
希望t-sql以后支持这样的语法: *, ! fieldname1, ! fieldname2 !== 从*里减去指定的字段
沐NeMo 2015-10-28
  • 打赏
  • 举报
回复
我是写在一个公用的函数里面,只能用*,否则每次调用都得知道表的所查字段名。
qq_17482963 2015-10-28
  • 打赏
  • 举报
回复
把你的*改为你要的字段

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧