none
sql2008临时表问题 RRS feed

  • 问题

  • 临时表分页,执行语句如下:

     exec('select ' + @FdName + '=identity(int,0,1),' + @FdShow+'
      into #tb from(select top 100 percent * from' + @QueryStr + @FdOrder + ')a
      select ' + @FdShow + ' from #tb where ' + @FdName + ' between '
      + @Id1 + ' and ' + @Id2
     )以上代码在网上搜搜很多的,2000下排序一切正常,2008下却不能,2005没有测试

    分析结果如下:

    1、select top 100 percent * from' + @QueryStr + @FdOrder 这句查询的结果为正常(2000及2008),包括排序,@QueryStr及@FdOrder 有索引/主键。

    2、问题在select into #tb,我发觉在插入临时表#tb的时候,1所查出的结果是按照主键/索引的默认排序方式排序的,@FdOrder 中order by 语句根本没起到任何作用

    2010年4月21日 3:16

答案

全部回复

  • 汗!分页的话2005之后可以用row_number()over(order by) 了吧,写起来容易一些。
    • 已标记为答案 withmac 2010年4月22日 7:18
    2010年4月21日 7:14
  • 这个我知道的,不过我还不确定到时候会部署到什么数据库,所以这三个版本都考虑了。

    之所以发这个帖子是奇怪在不同版本的情况下临时表插入的排序问题

    2010年4月21日 11:34