sql查询表中的最新记录

时间:2014-05-04 19:12:24

标签: sql

我有一张如下表:

EmployeeName -----    date       ------ seqno

  A            10-02-2014                2
  B            10-02-2014                1
  C            10-01-2014                1
  D            10-02-2013                2
  E            10-02-2013                1

现在每当在同一天添加新员工时,seq no就会被添加到1个以上..假设为10-02-2014添加了一个员工,seq num变为3 ..所以i need the latest record with max sequence number。我能用rownum做到这一点:

select * from employee where rownum=1 order by date,seqno DESC;

这是正确的吗?

有没有办法在不使用rownum的情况下执行此操作?

2 个答案:

答案 0 :(得分:1)

是的,使用子查询

select * from employee e
where date = 
     (Select Max(date)
      from employee)
   and seqno = 
     (Select Max(seqno)
      from employee
      where date = e.date)

您显示的查询应为日期和seqNo指定desc ....
(如果未指定,查询处理器将采用升序方式。)

select * from employee 
where rownum=1 
order by date desc, seqno DESC;

答案 1 :(得分:0)

您可以通过此方法使用rownumrownumFROM clause中形成,因此排序将改变数字序列。您必须使用子查询来获得正确的结果。

SELECT * FROM
(
   SELECT *
   FROM employee
   ORDER BY date DESC, seqno DESC
) A
WHERE rownum = 1