简单描述
最近要完成一个简单的根据成绩排序,如果分数相同就排名一致。在Mysql和Oracle上可以使用rank()这个函数,但在本地的MariaDB上无论怎么试都不行。于是查了一下官网,rank()功能函数的使用,发现这是10.2版本才支持的函数。
官网地址:\http\s://mariadb.com/kb/en/library/rank/,所以一顿操作下来先
查看本地数据库版本
查看本地MariaDB数据库版本,进入数据库,然后在数据库命名行输入‘status’命令。输出会显示服务器的版本还有协议版本,或者直接进入数据库第一行就可以看到~~
status, 看Service version
本机的版本是5.1的所以要升为 10.2。继续:
升级为10.2(以下都在Centos7下操作)
- 升级前,先对数据库进行一次备份
mysqldump -uroot -p --database database_name >name.sql
- 创建/etc/yum.repos.d/MariaDB.repo文件 用的国内的源,下载速度会比较快
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
- 关闭并卸载旧版本的mariadb,安装新版本的mariadb。
卸载mariadb:
yum remove mariadb
删除配置文件:
rm -f /etc/my.cnf
删除数据目录:
rm -rf /var/lib/mysql/
清除yum源缓存数据
yum clean all
生成新的yum源数据缓存
yum makecache all
安装mariadb10.2
yum install MariaDB-server MariaDB-client -y
- 下载完进行配置
启动并添加开机自启:
systemctl start mariadb.service
systemctl enable mariadb.service
- 进行初始化
/usr/bin/mysql_secure_installation
--其中有一条需要注意的,拒绝管理员远程登录
Disallow root login remotely? [Y/n]: n
- 导入数据到新版本mariadb
这样我们的数据库升级就完成了
查询
导入我们需要的数据库,然后输入查询语句,区别写在语句后。
select *, rank() over(order by score desc)as f from students; // 可以排序,但是会在重复2次之后,下一个排序是3
select *, dense_rank() over(order by score desc)as f from students; //推荐使用,可以得到重复的分数就同一排名
select *, row_number() over(order by score desc)as f from students; // 可以按成绩顺序依次的123456
这样就可以了。