關於mysql排序的問題實例解析

關於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.aiwalls.com  

select if(ISNULL(@i),@i:=1,@i:=@i+1) , name, score from tb order by score desc ;

需兩條sql,第一條把@i 重置為0(不重置的話,下次運行時@i會用上一次的結果), 第二條再取排名

看實際應用瞭。。。

 

 

 

作者 spamer

發佈留言