关于mysql排序的问题实例解析_MySQL
程序员文章站
2024-02-15 23:14:11
...
bitsCN.com
关于mysql排序的问题实例解析 今天面试一家公司, 问了一个关于取出分数排名的问题:如表结构如下:namescorezhang50wang30li80wu20 要求按score输出排名。这个问题我以前做过的, 要求在纸上写出来,我说有个电脑一下就出来了...(要求在纸上写sql 真坑爹啊)于是回家后不到一分钟在电脑上就写出来了 ..., 备忘如下:
SELECT @i:=@i+1 ,name,score FROM `tb`, (select @i:=0) as i ORDER BY score desc; 结果输出 @i:=@i+1 name score1 li 802 zhang 503 wang 304 wu 20 ====================================================让别人在纸张上写程序, 只能发挥一半的功力啊, 面试者要反思啊。。。=================补充分割线=====================
此题的另外一个解法:set @i:=0; select if(ISNULL(@i),@i:=1,@i:=@i+1) , name, score from tb order by score desc ;
需两条sql,第一条把@i 重置为0(不重置的话,下次运行时@i会用上一次的结果), 第二条再取排名
看实际应用了。。。
作者 spamer bitsCN.com
关于mysql排序的问题实例解析 今天面试一家公司, 问了一个关于取出分数排名的问题:如表结构如下:namescorezhang50wang30li80wu20 要求按score输出排名。这个问题我以前做过的, 要求在纸上写出来,我说有个电脑一下就出来了...(要求在纸上写sql 真坑爹啊)于是回家后不到一分钟在电脑上就写出来了 ..., 备忘如下:
SELECT @i:=@i+1 ,name,score FROM `tb`, (select @i:=0) as i ORDER BY score desc; 结果输出 @i:=@i+1 name score1 li 802 zhang 503 wang 304 wu 20 ====================================================让别人在纸张上写程序, 只能发挥一半的功力啊, 面试者要反思啊。。。=================补充分割线=====================
此题的另外一个解法:set @i:=0; select if(ISNULL(@i),@i:=1,@i:=@i+1) , name, score from tb order by score desc ;
需两条sql,第一条把@i 重置为0(不重置的话,下次运行时@i会用上一次的结果), 第二条再取排名
看实际应用了。。。
作者 spamer bitsCN.com
下一篇: java程序员学习php二