SQL面试题更新 2026-08-05

请写出一条SQL语句,用来获取每位用户的最近一次访问记录,包括访问日期和对应的页面路径。

编码实现问题拆解SQL

考察说明

考察对窗口函数或分组排序取最新记录的SQL编写能力

回答思路

  1. 【回答框架 1】使用窗口函数ROW_NUMBER()按用户分区,按访问日期降序排序,取排名为1的记录,这样可以准确得到每个用户最近一次访问。
  2. 【回答框架 2】如果数据库不支持窗口函数,可以用子查询先查出每个用户的最大访问日期,再与原表关联,但要确保用户和日期的组合唯一,否则可能产生重复行。
  3. 【回答框架 3】也可以使用关联子查询,但性能较差,数据量不大时可用。
  4. 【回答框架 4】输出字段为用户ID、访问日期、页面路径。
  5. 【关键点 1】窗口函数ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY visit_date DESC)取rn=1
  6. 【关键点 2】子查询先取每个用户最大日期再关联
  7. 【关键点 3】注意日期唯一性,否则需去重
  8. 【易错点 1】直接GROUP BY用户会丢失页面路径信息
  9. 【易错点 2】关联时需使用复合条件避免重复
  10. 【易错点 3】窗口函数性能优于子查询