如何在 SQL 中选择最近日期的行?

6
我有一个表格,包含列employee_idstatusupdate_date。我想在满足update_date是最近的条件下选择这三列(status的值为initiated、completed和not_applicable,所以根据该值,employee_id可能会在表格中出现3次)。
该表格大约有300行数据,但我知道输出应该包含约50个结果。我对SQL非常陌生。
我尝试过的查询语句是:
select employee_id, status, update_date 
from data 
where update_date = max(update_date)

2
我已经删除了不兼容的数据库标签。请仅使用您真正使用的数据库进行标记。 - Gordon Linoff
2个回答

10
也许您想要的是:

select d.employee_id, d.status, d.update_date 
from data d
where update_date = (select max(d1.update_date) 
                     from data d1 
                     where d1.employee_id = d.employee_id
                    );

我在执行/理解这个查询时遇到了困难,因为只有一个表(我已经在原帖中将其重命名为“data”)。你回复中的t1是什么? - bayesian.asian
@bayesian.asian. . . 同样,这也会在子查询中使用数据。请参见编辑。 - Yogesh Sharma
明白了!感谢您的帮助。 - bayesian.asian

0

这个 SQL 查询在大多数 DMBS 系统中像 MySQL、PostgreSQL 和 SQL-server 中都可行。
请记住,当员工具有相同的 MAX 更新日期时,它还返回平局。

   SELECT 
     *
    FROM (
      SELECT 
          employee_id
        , MAX(update_date) AS max_update_date     
      FROM
       table
      GROUP BY
       employee_id  
    ) AS table_max
    INNER JOIN
     table 
    ON
       table.employee_id = table_max.employee_id
     AND
       table.update_date = table_max.max_update_date     

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接