You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL日期问题:仅显示每位员工的最新求学记录单条数据

解决方案:获取每位员工最新求学记录

没问题,这是日常SQL查询里很常见的需求,我给你两种通用的实现方式,适配绝大多数主流数据库(比如MySQL、PostgreSQL、SQL Server等):

方法一:使用窗口函数(推荐)

窗口函数是处理这类分组取最值场景最直观的方式,我们可以用ROW_NUMBER()给每个员工的记录按school_end倒序排名,然后筛选出排名为1的记录:

WITH ranked_records AS (
    SELECT
        employee_id,
        school_end,
        school_name,
        ROW_NUMBER() OVER (
            PARTITION BY employee_id 
            ORDER BY school_end DESC
        ) AS record_rank
    FROM your_table_name
)
SELECT
    employee_id,
    school_end,
    school_name
FROM ranked_records
WHERE record_rank = 1;

说明:

  • PARTITION BY employee_id:按员工ID分组,确保每个员工的记录单独排序
  • ORDER BY school_end DESC:在每组内按毕业日期倒序,最新的日期排第1
  • 如果存在多条记录毕业日期相同且都是最新的情况,ROW_NUMBER()会随机选一条;如果想保留所有同日期的最新记录,可以把ROW_NUMBER()换成RANK()或DENSE_RANK()

方法二:使用关联子查询

如果你的数据库版本不支持窗口函数(比如老版本MySQL),可以用子查询先找到每个员工的最新毕业日期,再关联原表获取对应的学校名称:

SELECT
    t.employee_id,
    t.school_end,
    t.school_name
FROM your_table_name t
INNER JOIN (
    SELECT
        employee_id,
        MAX(school_end) AS latest_school_end
    FROM your_table_name
    GROUP BY employee_id
) latest ON t.employee_id = latest.employee_id 
         AND t.school_end = latest.latest_school_end;

说明:

  • 子查询先找出每个员工的最大school_end(即最新毕业日期)
  • 通过INNER JOIN关联原表,匹配员工ID和最新日期,得到对应的学校名称
  • 这种方法同样会保留所有同日期的最新记录(如果存在的话)

记得把代码里的your_table_name替换成你实际的表名哦!

内容的提问来源于stack exchange,提问作者BobJones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 17:07:29