举个例子:比如说,有一个游客表,存储游客的信息,有一个游玩记录表,存储游玩记录的信息,两表呈现一对多关系,每个游客都有不止一条游玩记录,现在我要查询出每一个游客最近一次去游玩的游玩记录信息,这时候查询就是一对多,且要根据游客分组,且分完组后要在组内根据游玩时间倒叙排列,取第一条。
举个例子:就比如说游客表 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.youkuaiyun.com/zhangyang_2015/article/details/103166090
本文通过一个SQL查询示例,演示如何从游客表和游玩记录表中检索每个游客的最后一次游玩信息。查询利用窗口函数row_number()进行分组和排序,确保每个游客只显示其最新的游玩记录。
1692

被折叠的 条评论
为什么被折叠?



