[数据库与SQL]
来源:互联网 发布:w7 mysql更改密码 编辑:程序博客网 时间:2024/06/10 08:29
MySQL中不存在类似于SQL Server或Orcal中的rank()函数来得到排名。所以我们需要手动来时先这个函数,先看一下应用场景:
查询每门课成绩最好的前两名:
select r.cid,score,rank from(select tmp.cid,tmp.score,if(tmp.cid=@tmid,@rank:=@rank+1,@rank:=1) as rank,@tmid:=tmp.cidfrom (select cid,score from sc group by cid,score order by cid asc,score desc) tmp,(select @rank:=0,@tmid:=null)tmp1) rwhere score is not null and rank <=2;
首先,我先讲解一下,sql中的@rank是什么意思,sql中使用@来定义一个变量,同时使用@XXX:= 123 来给@rank变量赋值123
怎么解释这段代码呢?我们来逐层的解析一下:首先,我们先选出sc中每一课对应的成绩,课号,成绩排序:即 select cid,score from sc group by cid,score order by cid asc,score desc
定义变量@rank,@pa,同时和之前的成绩表进行连接,结果如下:
@rank表示每个成绩对应的排名,@pa的作用我们稍后在介绍
if(A,B,C)在SQL中表示,如果A条件成立,那么执行B,否则执行C
接下来我们对每个记录,设置@pa表示上一次记录的课号,如果当前的课号和@pa一样,那么该记录的@rank就加1,如果@pa和当前的课号不一样,那么就说明这记录时对应课号的首条记录,那么rank为1 同时更改该名称为rank
最后在最外边的查询中,投影课号,成绩,排名
阅读全文
0 0
- 数据库与SQL语言
- sql数据库与tcpview
- 数据库与sql简介
- SQL与各种数据库
- 数据库与SQL语言
- [数据库与SQL]
- [数据库与SQL]
- [数据库与SQL]
- [数据库与SQL]
- [数据库与SQL]
- 数据库与SQL基础
- SQL数据库与JDBC技术
- sql数据库分离与附加
- SQL数据库备份与还原
- Access数据库与SQL不一样
- SQL数据库备份与还原
- SQL收缩日志与数据库
- sql 数据库备份与还原
- C# winform把新值写入app.config文件
- (六)Interacting with Other Apps与其他应用进行交互
- 什么是事件委托?
- 红黑树插入算法调整的一些原则
- 欢迎使用CSDN-markdown编辑器
- [数据库与SQL]
- 学习嵌入式Linux系统开发基础 第五课(Linux服务器配置)
- 数据库-sql语法例子
- svn应用中的注意事项
- GitHub Desktop安装配置
- 开学第一周总结
- 文本文件与二进制文件
- Python 编写规范
- Django 学习笔记(七)数据库基本操作(增查改删)