亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

最后的篩選SQL條件應該改為:update_time>=sql_last_value and update_time<now()

SQL where條件為:? ? ? ? ? ? ? update_time>sql_last_value? ?的問題在于會遺漏臨界點數據,解決思路應該是將臨界點數據包含進來

老師給出的解決方案SQL是: update_time>sql_last_value? ?and update_time<now()

就是在上面的SQL篩選條件上又加了一個篩選條件,無需理解SQL的業務含義,就可知下面SQL的數據范圍比上面的小,上面的大范圍沒有包含的數據,就不可能在一個比上面還小的范圍里。即臨界點數據沒有被上面的sql查詢到,就不可能被下面的sql查詢到。所以老師最后給出的sql并沒有解決臨界點數據問題,正確的SQL應該是將下面的>改為>=(我想這應該是老師的一個手誤)

這樣的話,臨界點的數據就交給了下一次同步任務查出來,不會忽略以及重復查詢

正在回答

4 回答


假如2022:01:01 00:01插100條

第一次搜
>1979:01:01 00:00 < 2022:01:01 00:01

你可能根本就搜不出來,因為條件是少于當時系統時間00:01
其實就是搜索了
>1979:01:01 00:00 < 2020:01:01 00:00這個范圍而已

所以這時候插入的數據根本沒匹配到數據
注意這里保存的時間點可能是00:00,但絕對不是00:01

所以第二次搜的時候是>00:00而不是>00:01

>2022:01:01 00:00 < 2022:05:05 00:01

這里為什么是00:00而不是00:01呢,因為第一次搜的時候是記錄<少于不是=的時間點

其實老師這個語法只是把當前時間插入的100條數據放棄搜索不處理而是供給下次執行搜索的范圍做條件

1 回復 有任何疑惑可以回復我~


假如2022:01:01 00:01插100條

第一次搜
>1979:01:01 00:00 < 2022:01:01 00:01

你可能根本就搜不出來,因為條件是少于當時系統時間00:01
其實就是搜索了
>1979:01:01 00:00 < 2020:01:01 00:00這個范圍而已

所以這時候插入的數據根本沒匹配到數據
注意這里保存的時間點可能是00:00,但絕對不是00:01

所以第二次搜的時候是>00:00而不是>00:01

>2022:01:01 00:00 < 2022:05:05 00:01

這里為什么是00:00而不是00:01呢,因為第一次搜的時候是記錄<少于不是=的時間點

其實老師這個語法只是把當前時間插入的100條數據放棄搜索不處理而是供給下次執行搜索的范圍做條件

1 回復 有任何疑惑可以回復我~

我同意樓主的觀點,感覺老師的寫法,少了等號,一定會漏掉增量數據!

0 回復 有任何疑惑可以回復我~

我也是跟你一樣的想法,除非..........這個sql_last_value指的是同步時最后一條數據的更新時間?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

最后的篩選SQL條件應該改為:update_time>=sql_last_value and update_time<now()

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號