☆【嚣张恒少】mysql实现oracle row_number窗口函数

– oracle:
测试数据:
create table test_zh(id varchar2(10),time date,a1 varchar2(10));
insert into test_zh select 1,sysdate,‘a’ from dual;
insert into test_zh select 2,sysdate,‘a’ from dual;
insert into test_zh select 5,sysdate,‘b’ from dual;
insert into test_zh select 1,sysdate,‘b’ from dual;
insert into test_zh select 1,sysdate,‘b’ from dual;
insert into test_zh select 1,sysdate,‘c’ from dual;
insert into test_zh select 1,sysdate,‘d’ from dual;

sql主体:
Select Id,time,a1,Row_Number() Over(Partition By a1 Order By time Desc) Px From test_zh;

1 2019/9/29 16:15:33 a 1
2 2019/9/29 16:15:36 a 2
5 2019/9/29 16:15:40 b 1
1 2019/9/29 16:15:43 b 2
1 2019/9/29 16:15:45 b 3
1 2019/9/29 16:15:48 c 1
1 2019/9/29 16:15:50 d 1

– mysql:
测试数据:
create table test_zh(id varchar(10),time datetime,a1 varchar(10));
insert into test_zh select 1,sysdate(),‘a’;
insert into test_zh select 2,sysdate(),‘a’;
insert into test_zh select 5,sysdate(),‘b’;
insert into test_zh select 1,sysdate(),‘b’;
insert into test_zh select 1,sysdate(),‘b’;
insert into test_zh select 1,sysdate(),‘c’;
insert into test_zh select 1,sysdate(),‘d’;
sql主体:
SELECT id,time,a1,@row_number := CASE
WHEN @i = a1 THEN @row_number + 1
ELSE 1
end AS num,@i:=a1
FROM test_zh
ORDER BY a1,time Desc;
±-----±--------------------±-----±-----±-------+
| id | time | a1 | num | @i:=a1 |
±-----±--------------------±-----±-----±-------+
| 2 | 2019-09-29 16:12:19 | a | 1 | a |
| 1 | 2019-09-29 16:12:15 | a | 2 | a |
| 1 | 2019-09-29 16:12:30 | b | 1 | b |
| 1 | 2019-09-29 16:12:27 | b | 2 | b |
| 5 | 2019-09-29 16:12:22 | b | 3 | b |
| 1 | 2019-09-29 16:12:34 | c | 1 | c |
| 1 | 2019-09-29 16:12:37 | d | 1 | d |
±-----±--------------------±-----±-----±-------+
7 rows in set (0.00 sec)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值