即不通过ID,不通过排序,直接提取表中的第二行或第七行或第N行,可有办法?苦恼了好久,以前在Access中也未能解决这个问题,在SQL中又遇到这个问题,谁来帮我解答,非常感谢!

解决方案 »

  1.   

    给你一个例子。
    create table #t(class nvarchar(10),name nvarchar(10), money int)
    insert #t 
    select N'class01','name01',100
    union all
    select N'class01',N'name02',200
    union all
    select N'class01',N'name03',300
    union all 
    select N'class01',N'name04', 400
    union all 
    select N'class02',N'name01',500
    union all 
    select N'class02',N'name02',600
    union all
    select N'class02',N'name03',700
    union all 
    select N'class03',N'name01',800
    union all 
    select N'class03',N'name02',900
    union all
    select N'class03',N'name03',1000
    union all 
    select N'class03',N'name04',1100
    union all 
    select N'class03',N'name05',1200select class, name, money from 
    (
    select t2.class,t2.money, name,(select count(1) [count] from #t t1 where t2.money<=t1.money and t1.class=t2.class) [count]  from #t t2
    ) a
    --如果是第2第7,则下面语句为where count in (2,7)
    where count in (1,2)drop table #t
    /*
    class      name       money       
    ---------- ---------- ----------- 
    class01    name03     300
    class01    name04     400
    class02    name02     600
    class02    name03     700
    class03    name04     1100
    class03    name05     1200
    */
      

  2.   

    不好意思,我刚学SQL,菜鸟,看不太懂....
    这个"#t"我怎么在表中看不到,提示说对象名错误,#t不存在?
    每个字段值前面加“N”是什么意思?
    还有,count是合计中计数函数,括号中的‘1’是什么意思?
    怎么会有t1和t2两个表出来呢?
    'where count in (1,2)'更看不懂了。希望高手不吝赐教!!!
    我的意思是能否写一个语句,可以提取任意一行的数据。
    您知道,每行数据前面都有个行号,不管如何排序,最前面的那个行号始终是从1开始并且是连续的,能否通过取得行号来取得表中或视图中任意一行的数据?如何取得行号?
      

  3.   

    不好意思,你省略了AS,所以有t1和t2,这个我看懂了。帮忙解决一下其它的疑问,非常感谢!