MySQL使用变量实现各种排序详解


本文摘自PHP中文网,作者小云云,侵删。

本文主要介绍了MySQL使用变量实现各种排序,需要的朋友可以参考下。希望能帮助到大家更好的使用mysql。

核心代码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

--下面我演示下MySQL中的排序列的实现

--测试数据

CREATE TABLE tb

(

score INT

);

INSERT tb SELECT

5 UNION ALL SELECT

4 UNION ALL SELECT

4 UNION ALL SELECT

4 UNION ALL SELECT

3 UNION ALL SELECT

2 UNION ALL SELECT

1;

--1.row_number式的排序

SET @row_number =0;

SELECT @row_number := @row_number+1 AS row_number,score

FROM tb

ORDER BY score DESC ;

+------------+-------+

| row_number | score |

+------------+-------+

|     1 |   5 |

|     2 |   4 |

|     3 |   4 |

|     4 |   4 |

|     5 |   3 |

|     6 |   2 |

|     7 |   1 |

+------------+-------+

--2.dense_rank式的排序

SET @dense_rank = 0,@prev_score = NULL;

SELECT @dense_rank :=IF(@prev_score=score,@dense_rank,@dense_rank+1) AS decnse_rank,

  @prev_score := score AS score

FROM tb

ORDER BY score DESC ;

+-------------+-------+

| decnse_rank | score |

+-------------+-------+

|      1 |   5 |

|      2 |   4 |

|      2 |   4 |

|      2 |   4 |

|      3 |   3 |

|      4 |   2 |

|      5 |   1 |

+-------------+-------+

--3.rank式的排序

SET @row=0,@rank=0,@prev_score=NULL;

SELECT @row:=@row+1 AS ROW,

    @rank:=IF(@prev_score=score,@rank,@row) AS rank,

    @prev_score:=score AS score

FROM tb

ORDER BY score DESC;

+------+------+-------+

| ROW | rank | score |

+------+------+-------+

|  1 |  1 |   5 |

|  2 |  2 |   4 |

|  3 |  2 |   4 |

|  4 |  2 |   4 |

|  5 |  5 |   3 |

|  6 |  6 |   2 |

|  7 |  7 |   1 |

+------+------+-------+

相关推荐:

MYSQL创建函数出错如何解决

关于MySQL中REGEXP正则表达式使用小结

MySQL中的常用函数详解

以上就是MySQL使用变量实现各种排序详解的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

mysql神器之show full processlist

浅析mysql中concat以及group_concat的使用

mysql不等于符号怎么写

深入解析mysql索引数据结构

详解mysql插入数据成功但是报[err] 1055错误如何解决

mysql容器之间的replication配置实例详解

mysql转储/恢复存储过程和触发器

详解 mysql int 类型的长度值问题

mysql中关于修改root密码以及安装与配置调优的方法介绍

数据库里的id是什么?

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...