mysql 排序函数
时间: 2025-04-17 09:26:31 浏览: 16
### MySQL 排序函数及其使用
在 SQL 中,生成排名通常依赖于窗口函数 (Window Function),特别是 `ROW_NUMBER()`、`RANK()` 和 `DENSE_RANK()` 函数。这些函数能够基于特定字段的排序顺序为记录分配排名。
#### ROW_NUMBER()
此函数会按照指定列的值进行排序并返回每行唯一的编号。即使存在相同的值,也会赋予不同的行号[^2]。
```sql
SELECT
id, name, score,
ROW_NUMBER() OVER (ORDER BY score DESC) AS row_num
FROM students;
```
上述代码将对学生表中的成绩按降序排列,并给每一行分配一个独一无二的位置号码。
#### RANK()
该函数同样依据设定条件对数据集内的项目实施排序处理,不过当遇到相同数值时,则给予相等位次;之后跳跃至下一个可用位置继续计数。
```sql
SELECT
id, name, score,
RANK() OVER (ORDER BY score DESC) AS rank_val
FROM students;
```
这段语句会对分数做同样的降序整理工作,但对于拥有相同得分的学生而言,它们会被授予一致名次,而后续学生的排名则相应跳过某些整数。
#### DENSE_RANK()
与 `RANK()` 类似,但是不会跳过任何等级。也就是说,在有多个条目共享同一级别的情况下,紧接其后的其他成员依旧获得连续性的编排。
```sql
SELECT
id, name, score,
DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank_val
FROM students;
```
这里展示的是如何利用密集排名机制来避免因重复项而导致的不连贯序列问题。
阅读全文
相关推荐


















