如何提取最新的行

时间:2011-02-17 07:12:30

标签: sql db2 ibm-midrange

我有一张这样的表:

Table A
Date    Time    ID  Ref
110217  91703   A001    A1100056
110217  91703   A001    A1100057
110217  91703   A001    A1100058
110217  91703   A001    A1100059
110217  132440  A001    A1100057
110217  132440  A001    A1100058
110217  132440  A001    A1100060
110217  91703   B001    B1100048
110217  91703   B001    B1100049
110217  132440  B001    B1100049
110217  132440  B001    B1100050

我希望只有最新的数据和最终结果应该使用SQL:

Date    Time    ID  Ref
110217  132440  A001    A1100057
110217  132440  A001    A1100058
110217  132440  A001    A1100060
110217  132440  B001    B1100049
110217  132440  B001    B1100050

(3条记录都具有相同的“最新”时间)

数据库会在特定时间自行更新。问题是:我不知道确切的时间,因此我不知道哪条记录是最新的。

3 个答案:

答案 0 :(得分:3)

这适用于SQL Server:

SELECT TOP 1 WITH TIES *
FROM TableA
ORDER BY Date DESC, Time DESC

这个解决方案可能与服务器无关:

SELECT a.*
  FROM TableA a
  JOIN (
       SELECT d.MaxDate, MAX(t.Time) AS MaxTime
         FROM TableA t
         JOIN (
              SELECT MAX(Date) AS MaxDate
                FROM TableA
              ) d
           ON t.Date = d.MaxDate
        GROUP BY d.MaxDate
       ) m
    ON a.Date = m.MaxDate AND a.Time = m.MaxTime

答案 1 :(得分:1)

SELECT * FROM table ORDER BY date DESC, time DESC LIMIT 1;

将为您提供MySql中的最新行。

答案 2 :(得分:0)

您使用的是哪个数据库?实际上,您可以在将这两列转换为日期和时间格式后对其进行连接,然后按日期排序。所有这些都可以在查询中实现。