mysql设置变量用来排序_MySQL使用变量实现各种排序详解

本文主要介绍了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 |

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

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值