排序的问题~`
表我就不建立了
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(天道酬勤)”了 ^_^
表我就不建立了
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(天道酬勤)”了 ^_^
还是 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条语句可以看成是一个事务不知道我说的你理解了么?
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);
}
关键是这句 where b.总分>a.总分
a , b都是代表table1
b.总分 不就是 a.总分 吗
凭什么说是b的一个总分 跟 a的每个总分 比较
这时候B的总分是单个值 但A的值确是一个集合 ??