MySQL实现简单排名

简介: MySQL实现简单排名

01 基础知识

  • sql语句中,使用@来定义一个变量。如:@abc
  • sql语句中,使用:=来给变量赋值,:@abc:=123,则变量abc的值为123
  • sql语句中,if(A,B,C)表示,如果A条件成立,那么执行B,否则执行C,如:@abc := if(2>1,100,200)的结果是,abc的值为100。
  • sql语句中,还有case…when…then

02 排名例子

SELECT
  city_popularity.*,
  CASE 
    WHEN @popularity = popularity THEN @rank
    WHEN @popularity := popularity THEN @rank := @rank + 1
    WHEN @popularity = 0 THEN @rank := @rank + 1
  END AS rank
FROM
  city_popularity,
  (SELECT @rank := 0, @popularity := NULL) init
ORDER BY
  popularity DESC;

查询结果:

参考博客:

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
关系型数据库 MySQL
|
关系型数据库 MySQL
Mysql 常见排名实现
Mysql 常见排名实现
349 0
|
SQL JSON NoSQL
一起来聊聊MySQL 8.0 的特性及排名可好?
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
一起来聊聊MySQL 8.0 的特性及排名可好?
|
SQL 关系型数据库 MySQL
MySQL实现排名
MySQL实现排名
401 0
|
SQL 关系型数据库 MySQL
一文解决所有MySQL分类排名问题
对数据库中的记录依据某个字段进行排序是一种常见需求,虽然简单的Order by可以胜任,但如果想要输出具体的排名却难以直接实现。如果再考虑重复排名或者分类排名,那么情况就更为复杂。 本文介绍4种分类排名方式:子查询、自连接、自定义变量以及MySQL8.0窗口函数。
814 0
一文解决所有MySQL分类排名问题
|
关系型数据库 MySQL
MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER
本文介绍了MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER
423 0
|
关系型数据库 MySQL 计算机视觉
|
关系型数据库 MySQL

推荐镜像

更多