表中最新记录的sql查询
我有一张如下的桌子:表中最新记录的sql查询,sql,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
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
现在,无论何时在同一日期添加新员工,都会将序号添加到1个以上。。假设2014年2月10日又增加了一名员工,则序号变为3。。所以我需要最新的记录,最大序列号。。我可以使用rownum来完成此操作:
select * from employee where rownum=1 order by date,seqno DESC;
这是正确的吗
有没有不使用rownum的方法可以做到这一点?是的,使用子查询
select * from employee e
where date =
(Select Max(date)
from employee)
and seqno =
(Select Max(seqno)
from employee
where date = e.date)
您显示的查询应为日期和序号指定desc…
(如果未指定,则查询处理器假定为升序。)
通过这种方法,您可以使用rownum
。rownum
是在FROM子句中形成的,因此排序将改变数字顺序。必须使用子查询才能获得正确的结果
SELECT * FROM
(
SELECT *
FROM employee
ORDER BY date DESC, seqno DESC
) A
WHERE rownum = 1
您想要每个日期的最大序号记录还是所有记录?@hamlet否不是每个日期,而是最新日期
SELECT * FROM
(
SELECT *
FROM employee
ORDER BY date DESC, seqno DESC
) A
WHERE rownum = 1