如何提取最新行

发布于 2024-10-17 13:42:59 字数 784 浏览 7 评论 0原文

我有一个这样的表:

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 条记录均具有相同的“最新”时间)

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

I have a table like this:

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

I wish to have the latest data only & the final result should look like this using 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 records all with the same "latest" time)

The database will self-update by itself at certain time. The problem is: I do not know the exact time, hence I do not know which record is the latest.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

玉环 2024-10-24 13:42:59

这适用于 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

This works in SQL Server:

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

And this solution is probably server-independent:

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
不可一世的女人 2024-10-24 13:42:59
SELECT * FROM table ORDER BY date DESC, time DESC LIMIT 1;

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

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

Will give you the latest row in MySql.

别闹i 2024-10-24 13:42:59

您使用哪个数据库?实际上,您可以将两列转换为日期和时间格式后将其连接起来,然后按日期排序。这一切都可以在查询中实现。

Which database are you using? You can actually concat the two columns after converting them to a date and time format, and then order by date. All this can be achieved in query.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文