gpt4 book ai didi

SQL - 返回具有最大创建时间戳值的数据的不同行

转载 作者:太空狗 更新时间:2023-10-30 01:50:48 28 4
gpt4 key购买 nike

在我的程序中,我审核传入的数据,可以是 4 种类型。如果数据满足所有要求的条件,它会成功存储在表列中,连同消息类型和行被输入表时的时间戳。

数据也可能会写入错误的表,这是由于审计时发生的连接问题等原因造成的。该程序将重试审核此数据,如果成功,将写入一个新行,成功。所以你看我现在有 2 行用于特定的数据消息,一行成功,一行出错,两者都有不同的时间戳。 (成功具有比错误记录最近的时间戳。)

第三条消息被拒绝,如果传入数据不符合要求的标准,则会写入一条记录,同样带有创建时间戳。

我想做的是编写一个 Sybase SQL 查询,以仅提取每条接收到的消息的记录,具有最高时间戳。

所以对于上面的错误示例,我不想返回错误记录,只返回进程重试成功时相应的成功记录。

我想到了类似下面的东西..

SELECT distinct(*) 
FROM auditingTable
WHERE timestamp = (SELECT MAX(timestamp) from auditingTable)

虽然我知道这只会带回 1 条记录,具有整个表中最高的时间戳。

无论状态如何,我如何才能取回每条收到的消息的最新记录?

欢迎任何想法!

最佳答案

您没有提到您的 Sybase 版本。您可以使用 ROW_NUMBER() function

例如,您的表有 MessageIdMessageTime 字段,您可以使用以下查询:

SELECT * FROM
(
SELECT auditingTable.*,
ROW_NUMBER() OVER (PARTITION BY MessageID ORDER BY MessageTime DESC) as RN
FROM auditingTable
) as T
WHERE RN=1;

关于SQL - 返回具有最大创建时间戳值的数据的不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18144387/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com