【发布时间】:2013-08-11 05:59:42
【问题描述】:
在我的程序中,我审核传入的数据,可以是 4 种类型。如果数据满足所有要求的条件,它会成功存储在表列中,以及该行进入表时的消息类型和时间戳。
由于审计发生连接问题等问题,数据也可能被错误地写入表。程序将重试审核此数据,如果成功将写入新行,成功。所以你看我现在有两行数据的特定消息,一个成功,一个有错误,两者都有不同的时间戳。 (成功的时间戳比错误记录的最新。)
如果传入的数据不符合要求的标准,则会出现第三条消息被拒绝并写入记录,并再次带有创建时间戳。
我想做的是编写一个 Sybase SQL 查询,以仅拉回每条接收到的消息的记录,并带有最高的时间戳。
所以对于上面的错误示例,我不想返回错误记录,只返回进程重试并成功时的相应成功记录。
我想到了类似下面的东西..
SELECT distinct(*)
FROM auditingTable
WHERE timestamp = (SELECT MAX(timestamp) from auditingTable)
虽然我知道这只会带回 1 条记录,在整个表中具有最高的时间戳。
无论其状态如何,我如何才能取回收到的每条消息的最新记录??
欢迎任何想法!
【问题讨论】: