我有一个oracle表,其中充满了语音呼叫详细记录。我想从这个表中选择数据,并每20分钟将其传输到另一个数据库。调用记录的id是在调用开始时创建的,但调用仅在调用完成时添加到cdr记录表中,这导致表中的行被随机输入。我想使用一个查询,该查询选择了比上一个查询结果中最后一个提取的行更新的所有数据。
例如,基于下表,如果先前的查询提取了。行数达到id 24时,新查询将提取行54,6和53
Id. CLI. CLD
7. 1000. 2000
2. 1021. 2031
24. 1032. 2035
54. 1045. 2053
6. 1065. 2035
53. 1000. 2032
谢谢
约翰
答案 0 :(得分:0)
如果你有最后一次访问的id作为变量 - 比如v_id
- 那么:
select cdr.*
from cdr
where cdr.cld > (select cdr2.cld from cdr cdr2 where cdr2 = :v_id);
这假设如果两个记录在调用结束时放入相同的时间戳,则它们都存在于任何提取中。
根据呼叫的结束时间设计一个序号并使用它而不是时间戳可能更安全。