我在数据库中有一个表来维护历史记录/更改。我需要表中的数据,只对一个特定属性进行更改。
例如,让我们说一个特定的服务器记录状态是"开启"在第1天并在第2天和第3天关闭,更改了不同的属性,并在第4天再次恢复服务器状态。现在我只需要对服务器状态进行更改,我对服务器记录的任何其他更改都不感兴趣 有些人可以告诉我,如果递归SQL或自联接可以帮助我获得相关结果......
任何建议都会更受赞赏
答案 0 :(得分:0)
自我加入似乎是合适的。
关注点:
仅加入属于同一主题(duh)的行,保留state_1 / date_1和state_2 / date_2,仅保留两个状态不同的行,仅保留date_2> date_1,最后添加过滤条件使用WHERE NOT EXISTS(...),对于同一主题,date_1和date_2之间不能有任何介入日期_3。