mysql设置变量用来排序_MySQL关于使用变量实现各种排序的示例代码分析

news/2024/7/16 5:43:28 标签: mysql设置变量用来排序

这篇文章主要介绍了MySQL使用变量实现各种排序,需要的朋友可以参考下

核心代码--下面我演示下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 |

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


http://www.niftyadmin.cn/n/1270262.html

相关文章

步步深入MySQL:架构-查询执行流程-SQL解析顺序!

一、前言 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识。 二、MySQL架构总览 架构最好看图,再配上必要的说明文字。 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解。从上图中我们可以看到,…

mysql为什么产生死锁_mysql死锁是怎么造成的

造成mysql死锁的原因:两个或两个以上的进程在执行过程中争夺资源。mysql中有三种锁,分别是表级锁、行级锁和页面锁。其中,表级锁开销小、加锁快,不会出现死锁情况。mysql是一种关系型数据库管理系统,使用的 SQL 语言是…

mysql设置中奖率_中奖概率的代码!

在写之前请在数据库(mysql)创建一个lib的数据库!package com.nf.entity;import javax.persistence.*;EntityTable(name "book")public class Book {private Integer id;private String name;private Integer price;IdGeneratedValue(strategy Generation…

Linux之父道歉后,Linux社区颁布开发人员行为准则

本周Linux之父Linus Torvalds出人意表地发表忏悔录后,Linux社交周二再公布关于开发人员的言行的行为准备,不过社交反应不一。 近日因为Torvalds搞错时间,迫使一场Linux核心开发人员重要会议必须改期,引发社交对Torvalds长久以来态…

oracle rpad mysql_Oracle Lpad()函数和Rpad()函数的用法

Lpad()函数的用法: lpad函数将左边的字符串填充一些特定的字符其语法格式如下: lpad(string,n,[pad_string]) striLpad()函数的用法:lpad函数将左边的字符串填充一些特定的字符其语法格式如下:lpad(string,n,[pad_string])string&…

Docker学习专栏

揭开Docker的神秘面纱

python从0—9产生四个数_Python基础手册9——数字类型

Number(数字)Python的数字由字面值生成或者由算术操作符和内建的算术函数作为结果返回。数字提供了标量贮存和直接访问,它是不可更改类型,也就是说变更数字的值会生成新的对象。Python数字分为整型、布尔类型、浮点型、复数等。如何更新数字对象&#xf…

笔记react router 4(二)

上一篇我们提到react router 4的dom特性。那么这一次&#xff0c;我们来说一说4.X中的路由组件嵌套。 用过3.X的同学应该知道&#xff0c;路由组件的嵌套&#xff08;即&#xff0c;路由的配置&#xff09;方式是通过给<Route>添加子<Route> 例如&#xff0c; <…