[语法] ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)
[功能] 表示根据 COL1 分组, 在分组内部根据 COL2 排序, 而这个值就表示每组内部排序后的顺序编号 (组内连续的唯一的)
row_number() 返回的主要是 "行" 的信息, 并没有排名
[参数]
[说明] Oracle 分析函数
主要功能: 用于取前几名, 或者最后几名等
[示例]
表内容如下:
- name | seqno | description
- A | 1 | test
- A | 2 | test
- A | 3 | test
- A | 4 | test
- B | 1 | test
- B | 2 | test
- B | 3 | test
- B | 4 | test
- C | 1 | test
- C | 2 | test
- C | 3 | test
- C | 4 | test
我想有一个 sql 语句, 搜索的结果是
- A | 1 | test
- A | 2 | test
- B | 1 | test
- B | 2 | test
- C | 1 | test
- C | 2 | test
实现:
- select name,seqno,description
- from(select name,seqno,description,row_number() over (partition by name order by seqno) id
- from table_name) where id<=3;
来源: http://www.bubuko.com/infodetail-3110701.html