2012-02-20 131 views
2

通常計算用戶登錄系統的天數(如stackexchange)。在普通用戶表,我更新登錄信息Mysql查詢計算登錄天數

UPDATE users SET 
last_login='date', number_of_login=number_of_login + 1, number_of_days=? 
WHERE user_id='user_id' 

其中LAST_DATE爲datetime

什麼是最好的檢查當天是last_login不同與number_of_day=number_of_day+1更新的天數。

我心裏有兩個方法,但他們似乎是天真:

方法1:具有SELECT趕上LAST_LOGIN並與當天在PHP

比較

方法2:使用類似伎倆子選擇

我希望用一個簡單的查詢(如果可能)做到這一點。

回答

1

所以,如果我沒有得到你的評論錯了,你要時常更新LAST_LOGIN,但NUMBER_OF_DAYS只有LAST_LOGIN!= CURDATE()。試試這個:

UPDATE users SET 
number_of_days = if (last_login = curdate(), number_of_days, number_of_days + 1), 
last_login='date', number_of_login = number_of_login + 1 
WHERE user_id='user_id' 
+0

WHERE子句將停止整個更新;但無論如何我們都需要記錄last_login(無論這是今天的第一次登錄還是多次登錄) – Googlebot 2012-02-20 11:35:47

+0

好的,我已經更新了我的答案。讓我知道如果這次我得到它的權利:) – 2012-02-20 11:46:05

+0

感謝您的更新。這正是我的意思:) – Googlebot 2012-02-20 11:48:00