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)结果一样。是为了不排序。直接查询原始表。谢谢!

解决方案 »

  1.   

    希望t-sql以后支持这样的语法: *, ! fieldname1, ! fieldname2
    !== 从*里减去指定的字段
      

  2.   


    那就把* 改成你要的字段后 在外面再套一层 select * from ()
      

  3.   

    去不掉的,不过可以按 4#的方法再加一层。
    或者,把这个 RowID 放在最后,这样看着就舒服多了。
      

  4.   

    试一试这个语法能否通过:
    Select tblName.*  From tblName
    where
    Row_number() over (order by fieldxxx ) Between 1 and 200
      

  5.   

    回四、五楼:再加一层,怎么加法,我是为了不写字段名,因为每个表字段名都不一样,个数也不一样,才想要用*,但是多了一列RowID。回六楼:测试了,错误提示说,窗口函数只能在Select 或者 Order By 里面使用。
      

  6.   

    声明一个变量@sql,借助sys.columns把语句组合好放到@sql里,然后sp_executesql @sql完事
      

  7.   

    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