举个例子:比如说,有一个游客表,存储游客的信息,有一个游玩记录表,存储游玩记录的信息,两表呈现一对多关系,每个游客都有不止一条游玩记录,现在我要查询出每一个游客最近一次去游玩的游玩记录信息,这时候查询就是一对多,且要根据游客分组,且分完组后要在组内根据游玩时间倒叙排列,取第一条。
举个例子:就比如说游客表 a 长这样:
id | name | age |
---|---|---|
1 | 张三 | 18 |
2 | 李四 | 22 |
再比如游玩记录表 b 长这样
id | user_id | place | date |
---|---|---|---|
1 | 1 | 环球影城 | 2022-05-06 11:22:33 |
2 | 2 | 故宫 | 2022-05-06 11:22:33 |
3 | 2 | 环球影城 | 2022-05-06 11:22:33 |
4 | 1 | 环球影城 | 2022-05-06 11:22:33 |
上边俩表意思就是,张三在2022–5-6 11:22:33去环球影城玩了一趟,下边的user_id对应上边的id
SQL长这样:
select * from(
select *,row_number() over (partition by user_id order by date) rn
from b where user_id in(select id from a) t1) t2
where rn =1
参考:https://blog.csdn.net/zhangyang_2015/article/details/103166090