关于mysql排序的问题实例解析

2014-11-23 23:37:34 · 作者: · 浏览: 10

关于 mysql排序的问题实例解析
今天面试一家公司, 问了一个关于取出分数排名的问题:
如表结构如下:
name
score
zhang
50
wang
30
li
80
wu
20
要求按score输出排名。
这个问题我以前做过的, 要求在纸上写出来,我说有个电脑一下就出来了...
(要求在纸上写sql 真坑爹啊)
于是回家后不到一分钟在电脑上就写出来了 ..., 备忘如下:
SELECT @i:=@i+1 ,name,score FROM `tb`, (select @i:=0) as i ORDER BY score desc;
结果输出
@i:=@i+1 name score
1 li 80
2 zhang 50
3 wang 30
4 wu 20
====================================================
让别人在纸张上写程序, 只能发挥一半的功力啊, 面试者要反思啊。。。
=================补充分割线=====================

此题的另外一个解法:
set @i:=0; www.2cto.com
select if(ISNULL(@i),@i:=1,@i:=@i+1) , name, score from tb order by score desc ;

需两条sql,第一条把@i 重置为0(不重置的话,下次运行时@i会用上一次的结果), 第二条再取排名

看实际应用了。。。

作者 spamer