排序的问题~`
  表我就不建立了
select *,(select count(*) from table1  b where b.总分>a.总分)+1 排名 from table1 a 
   不懂 其中的a b 到底是对实际表的一个引用 还是 对实际表的一个复制,
我一直认为选择是一个 “指针” 从表的 首行首列 按行 扫描筛选的,那么这句b.总分>a.总分   中“指针”是怎么找的  , 不理解 ,高手解释下
   更多的排序 http://community.csdn.net/Expert/topic/5305/5305404.xml?temp=.222912 不明白
  以前很急 就只想要个答案,现在我也看了好久也没看懂,书上好象也没说这样的例子,没分了 ,抱歉 都给“marco08(天道酬勤)”了 ^_^

解决方案 »

  1.   

    b.总分>a.总分   这个是怎么回事啊
      

  2.   

    是B 的 总分 分别跟 A 中总分 比较  
    还是 A 总分 分别跟 B 中总分 比较  ??
      

  3.   

    a b是别名
    select *,(select count(*) from table1  b where b.总分>a.总分)+1 排名 from table1 a
    我一直认为选择是一个 “指针” 从表的 首行首列 按行 扫描筛选的,那么这句b.总分>a.总分   中“指针”是怎么找的我是这样子理解的,这其实是2条不同的语句组成1条复杂的sql语句,比如查询分析器先执行from table1 a这个语句,那么按照你的说法,数据库会先执行这条语句并扫描table1(别名为a),然后执行select count(*) from table1  b where b.总分>a.总分.而且这2条语句可以看成是一个事务不知道我说的你理解了么?
      

  4.   

    就好象是一个嵌套的循环嘛,如果用C语言写就像这样:table a,b;
    table 排名;
    int cc;
    for(pa=0;pa<count(a);pa++)
    {
      cc=0;
      for(pb=0;pb<count(b);pb++)
      if(pb->总分 > pa->总分)
        cc++;
      排名.push(cc);
    }
      

  5.   

    嵌套循环我明白
    关键是这句 where b.总分>a.总分 
    a , b都是代表table1 
    b.总分   不就是 a.总分 吗
     凭什么说是b的一个总分 跟 a的每个总分 比较
    这时候B的总分是单个值 但A的值确是一个集合 ??