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 跟踪最新记录和更新的主要内容,如果未能解决你的问题,请参考以下文章