閱讀此線程後:MySQL - Subtracting value from previous row, group byMySQL錯誤1064使用SQLVars
我用過的最upvoted答案中描述的方法,並寫了下面的代碼:
SELECT
T.id_str,
T.created_at,
T.retweet_count,
T.tweeted_at,
if (@lastid_str = T.id_str, T.retweet_count - @lastretweet_count, 0000.00) as RetweetChange,
@lastid_str := T.id_str,
@lastretweet_count := T.retweet_count
FROM
Tweets T,
(SELECT @lastid_str := 0,
@lastretweet_count :=0) SQLVars
ORDER BY
T.tweeted_at DESC,
T.id_str;
老問題解決了,新的問題:如何寫一個觸發器。
我的表看起來像這樣。其中,id_str是特定推文的唯一標識符。由於我每分鐘從單個用戶插入50條推文,因此會有許多相同的id_str。我想看看的是每分鐘改變retweet_count。 tweeted_at是當用戶推特時,created_at是當這個數據被插入到我的數據庫中。我想爲插入到數據庫的每個新數據生成retweet_change(與retweet_change列相比)。我應該如何編寫觸發器?
您在「T.tweeted_at」列後缺少逗號。現在看看它是否有效,正如你預期的那樣。有一個乾淨的格式化可讀查詢有助於錯過這樣簡單的事情:)但它只是習慣於格式化的習慣,因爲你學習。另外,我認爲您需要首先更改ID_Str的順序,因爲它似乎是您的IF()比較工作的分組基礎 – DRapp
!謝謝。我無法想象這是一個如此愚蠢的錯誤。 – Dylan
而不是做這個任務的查詢,有沒有辦法創建一個生成的列,以便我可以在MySQL中插入數據時自動計算數據?我的數據庫設計如下:每分鐘插入50個新行,我有一個自動遞增的主鍵。所以我想我可以這樣做:選擇最新插入的50行(Max(id)to Maxid - 50)將它們與之前插入的50行(Max(id)-50,Max(id)-100)進行比較if id_str是相同的計算轉推差異? – Dylan