我正在制作一个脚本,该脚本从数据库中获得了数据的增量更新。
我需要一些帮助,以获取两个连接表中包含的整个数据集(每秒表中的一个记录之一(至少一个(已更新;
到目前为止,我唯一能想到的是从以任何方式参与更改的第一个表中获取ID,然后在更通用的查询中使用这些ID作为过滤器。它有效,但它不是很漂亮,我觉得可以更好地优化解决方案。
这是一个示例的链接:
https://rextester.com/tlcia97116(无法打开SQL小提琴(。
上面的示例显示了两个选择的查询。第二个是我的解决方案,结果就是我要寻找的东西。换句话说 - "每当添加/更改表B中的一个记录之一时,请给我表A及其相关(加入(记录的记录。"
第一个查询是返回只有更新的行的集合,但是我需要所有的查询以稍后重新计算一些值,它们依赖于所有记录。
使用触发器的最好和最简单的处理方法。在第二个表中添加触发器,该表将在第一个表上推更改/调用更新。
在咨询了几个同事之后,我的解决方案似乎是我们必须采用的解决方案(主要是因为缺乏更好的解决方案(。
请求如下:
select *
from Placements as p
join PlacementCommissions as pc on p.PlacementId = pc.PlacementId
where p.PlacementId in (select distinct p2.PlacementId from Placements AS p2
JOIN PlacementCommissions AS pc2 ON p2.PlacementId = pc2.PlacementId
where ((pc2.TimeStamp >= @lastSuccessfullETLRun
AND pc2.TimeStamp < @startTimeBullhorn)
OR (p2.TimeStamp >= @lastSuccessfullETLRun
AND p2.TimeStamp < @startTimeBullhorn)))