2014-01-25 42 views
0

我通過查詢在每3小時獲取Twitter數據。其中一個字段url是關鍵。對於每個網址我都有retweet_count的值。以最佳方式更新表格數據

有時在接下來的3小時內,我會得到與前面類似的網址記錄。但retweet_count附帶更新的新值。

在每個查詢中,我得到約200個URL。

一種方法是在每次插入時我檢查url是否存在。如果沒有,則直接插入。如果已經存在,則獲取之前的rt_count值並與較新的值進行比較,如果不同則更新它。

漸漸地我的數據將增長到缺乏表中的記錄。以上情況將需要太多延遲。

有沒有更好的方法來做到這一點?任何樂觀的解決方案呢?

$insertQuery2 = "INSERT INTO frrole_article_sentiment (`url`, `sentiment`, `title` , `time` , `img_url` , `rt_count` , `tweet_count`, `today`, `youtube_url`, `hash`) VALUES ('".$url."','".$sentiment."','".$title."','".$time."','".$img_url."','".$rt_count."','".$tweet_count."','".$today."', '".$is_youtube."', '".$hash."')"; 

        if (!mysqli_query($con,$insertQuery2)) 

        { 

         //die('Error: ' . mysqli_error($con)); 

        } 
+0

你的問題很難理解。這是真的:每3個小時執行一次MySQL查詢,結果集至少有2個字段:'URL'和'retweet_count'? _(如果這是真的,共享查詢)_然後3小時後,您運行相同的查詢,有時會返回相同的'URL'字段,但具有不同的'retweet_count'值。當您剛剛查詢的結果集中的行具有不在** frrole_article_sentiment **中的「URL」值時,您想插入** frrole_article_sentiment **。如果那個「URL」值在那裏,那麼更新它? – AgRizzo

回答

1

既然你使用MySQL,你可以使用ON DUPLICATE KEY UPDATE功能: http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

您的查詢將成爲類似:

INSERT INTO frrole_article_sentiment (url, rt_count) 
VALUES('$url', '$rt_count') 
ON DUPLICATE KEY UPDATE rt_count=$rt_count; 

( 「URL」 假定爲PK,查詢縮短爲簡單起見,你應該包括所有的領域)

+0

謝謝,這個插入會更新現有的'url'和'rt_count'嗎? –

+1

它會插入記錄是否有「url」重複,否則它只會更新rt_count的值,但請參閱mysql.com上的文檔以獲取完整的參考 –

相關問題