【窗口函数】ROW_NUMBER()

ROW_NUMBER() 窗口函数(唯一行号)

函数说明

函数 作用 特点
ROW_NUMBER() 生成行号 相同数值也分配连续唯一序号,结果:1,2,3,4

实战案例:

数据表 users 用户访问表

usr_id log_date
001 2021/5/1
002 2021/5/1
003 2021/5/1
001 2021/5/2
003 2021/5/2
001 2021/5/3
003 2021/5/4

建表与测试数据

CREATE TABLE users (
    usr_id VARCHAR(10) NOT NULL COMMENT '用户ID',
    log_date DATE NOT NULL COMMENT '访问日期'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO users(usr_id, log_date)
VALUES
('001', '2021-05-01'),
('002', '2021-05-01'),
('003', '2021-05-01'),
('001', '2021-05-02'),
('003', '2021-05-02'),
('001', '2021-05-03'),
('003', '2021-05-04');

基于上面 users 表,取出每个用户最早的 1 条访问记录。

select usr_id,log_date
from(
	select usr_id,log_date,ROW_NUMBER() over(
		PARTITION by usr_id
		ORDER BY log_date asc
	)as rank_id
	from users
)tem
where rank_id = 1

运行结果

在这里插入图片描述

posted @ 2026-06-30 15:18  whh00A  阅读(4)  评论(0)    收藏  举报