SQL 跟踪最新记录和更新

Posted

技术标签:

【中文标题】SQL 跟踪最新记录和更新【英文标题】:SQL Tracking the latest record and update 【发布时间】:2017-07-14 01:49:55 【问题描述】:

我有一个表 id_track 历史记录,它以不同的时间戳更新 id。我想通过 sql 中的迭代搜索合并到最新的 id 中。我如何在 SQL 中做到这一点?

表: OLD_ID NEW_ID TIME-STAMP 101 103 1/5/2001 102 108 2/5/2001 103 105 3/5/2001 105 106 4/5/2001 110 111 4/5/2001 108 116 14/5/2001 112 117 4/6/2001 104 118 4/7/2001 111 119 4/8/2001 所需的结果表: OLD_ID LATEST_ID LAST TIME-STAMP 101 106 4/5/2001 102 116 14/5/2001 104 118 4/7/2001 110 111 4/5/2001 112 117 4/6/2001 111 119 4/8/2001

enter image description here

【问题讨论】:

stackoveflow 不是免费的编码服务。您必须先尝试自己解决问题;然后,如果卡住,请寻求具体帮助。你试过什么查询?此外,您还没有尝试解释 old_id 101 如何与 new_id 106 耦合。这没有明显的逻辑原因。在您使用颜色的图像中 - 它们是否意味着什么?什么? 表中old_id 101有新值103,然后103变为105,105变为106。所以101的id最新为106。可以通过相关sql搜索来完成。 关于这些数据,你知道一些你没有解释的东西。必须有其他东西使 101 与 106 相关……你没有解释那是什么。 【参考方案1】:

选择 old_id, ( 选择最大 (new_id) 来自 test01 b 从 old_id = a.old_id 开始 通过 old_id 连接 = 之前的 new_id) new_id, (选择时间戳 FROM test01 c WHERE new_id = ( SELECT MAX (new_id) 来自 test01 b 从 old_id = a.old_id 开始 通过 old_id 连接 = PRIOR new_id)) 时间戳 FROM 测试01 WHERE old_id NOT IN(选择 new_id 来自 test01 c) ORDER BY old_id ASC;

其中 test01 是包含数据的表。我们必须使用 START WITH .. CONNECT BY PRIOR

【讨论】:

以上是关于SQL 跟踪最新记录和更新的主要内容,如果未能解决你的问题,请参考以下文章

用于更改跟踪问题的 SQL RowVersion 编号列

如何在pl sql中跟踪异常终止

分别跟踪新记录和更新记录的计数

用以前的记录值更新最新记录

SQL 更新导致死锁

跟踪 Django 包更新