建立一个临时表,有一个identity字段,
插入,
select
,
还有更好的办法吗?

解决方案 »

  1.   

    如果有,可以这样写
    select top 10 (select count(*) from tbl1 where 主键字段<= a.主键字段),a.name 
    from tbl1 a
    order by a.主键字段
      

  2.   

    忘了加 NO
    select top 10 (select count(*) from tbl1 where 主键字段<= a.主键字段) as NO , a.name 
    from tbl1 a
    order by a.主键字段 
      

  3.   

    TO hughie(雨神):天啊,那效率岂不是很低????
      

  4.   

    to horby(三级程序员) 
    很低吗?
    这是一个解决的办法,
    你觉得怎样速度会快?
    建临时表?还是
    如果是建临时表,那你觉得建一个表,再插入,再查询速度快,
    还是建一个嵌套查询的速度快?
      

  5.   

    to hughie(雨神):我觉得建临时表快阿....
    我的意见是如果这个表经常使用,建各物理的临时表吧,反正银盘大,我一向不赞成使用过于复杂而麻烦的sql语句,隐患多,可扩展性不好,如果将来数据量大,那个sql语句汇成为你程序的瓶颈阿...
    我们可以牺牲硬件条件,提高软件性能,因为 硬件的升级费用<<软件的升级费用 ....哈哈,个人意见,仅供参考.
      

  6.   

    建临时表快
    select top 10 identity(int,1,1) as no,name into #t1 from tbl1
    select * from #t1
    在执行时,MSSQL好象是插入no在前,排序在后,因此,生成的序号实际上还是原表的缺省排序,如果要排序,请改动
    select top 10 name into #t0 from tbl1 order by name
    select identity(int,1,1) as no,name into #t1 from #t0
    select * from #t1