select (select count(*) from test where id<=a.id) as 序号,
id,name
from test a
order by id

解决方案 »

  1.   

    rea1gz(冒牌realgz V0.3) 
    select (select count(*) from test where id<=a.id) as 序号,
    id,name
    from test a
    order by ida是什么东东啊,谢谢
      

  2.   

    select rownum ,ID,name
    from test我记得是这样的.
      

  3.   

    from test a
    a就是test表
      

  4.   

    建议楼主用临时表,效率比较高
    select 序号=identity(int,1,1),* into #t from test order by idselect * from #t drop table #t
      

  5.   

    回复人: rea1gz(冒牌realgz V0.3) ( ) 信誉:100  2005-06-10 16:51:00  得分: 0  
     
     
       这个语句效率不行,数据多的话应该用临时表谢谢  rea1gz(冒牌realgz V0.3) ,现在这个系统数据量不大,所以想用一下这种方法,谢谢
     
      

  6.   

    from test a
    a就是test表的别名
      

  7.   

    中间这句看不懂,rea1gz(冒牌realgz V0.3) 能给讲讲吗
      

  8.   

    中间这句看不懂,(select count(*) from test where id<=a.id) rea1gz(冒牌realgz V0.3) 能给讲讲吗
    它怎么得到序号的
      

  9.   

    这个真的不好讲,估计我的正牌们都能讲清楚,可是我是冒牌的(select count(*) from test where id<=a.id) 好像是叫嵌入查询,但是我都是当作子查询来理解的,这一句实际就是统计出当前纪录(a.id)之前(包括当前纪录)的纪录条数,那就是需要的序号了冒牌的解释估计很不清楚,楼主如果还没理解,那就等多几天,等哪个正牌来解释吧
      

  10.   

    呵呵!!先声明我不是什么正牌,只是这个语句我是这样理解的
    大家听听对不对,共同学习吗?select (select count(*) from test where id<=a.id) as 序号,
    id,name from test a order by id我直接解释括号内的语句吧
    对表test进行统计所有的行数,假设是count(*)是3的话,根据判定条件,因为使用是同一个表test,
    所以需要为其取别名a,只要满足id<=a.id这个条件的话,从小到大即为1,2,3也就是所需的序号,
    很巧妙的用法,不知这个解释可以吗
      

  11.   

    rea1gz(冒牌realgz V0.3) 的解释偶看懂了,谢谢了