Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表中最新记录的sql查询_Sql - Fatal编程技术网

表中最新记录的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