Howdie,僅存儲用戶在MySQL數據庫中的最後500條記錄
我正在嘗試編寫一個系統,根據測試對其用戶進行預測。對於這部分我只想要數據庫存儲最近的500個值。
當前的領域,我儲存的
ID (Auto increment)
USERID (the users unique ID)
SCORE(an integer)
在一個理想的世界,我想系統,當一個獨特的用戶得到數據庫中的超過500條記錄刪除最早的行。有沒有一種簡單的方法可以在不使代碼真的很重的情況下自動執行此操作?
Howdie,僅存儲用戶在MySQL數據庫中的最後500條記錄
我正在嘗試編寫一個系統,根據測試對其用戶進行預測。對於這部分我只想要數據庫存儲最近的500個值。
當前的領域,我儲存的
ID (Auto increment)
USERID (the users unique ID)
SCORE(an integer)
在一個理想的世界,我想系統,當一個獨特的用戶得到數據庫中的超過500條記錄刪除最早的行。有沒有一種簡單的方法可以在不使代碼真的很重的情況下自動執行此操作?
你必須存儲日期/時間字段,所以你可以決定什麼是超過1個月,然後它變得簡單:
DELETE FROM yourtable
WHERE timestampfield > (NOW() - INTERVAL 1 MONTH)
如果你不會有任何「空白'在auto_incremented ID中,您可以做一個非常簡單的(並且非常容易出錯):
INSERT INTO .... <--add new record
DELETE FROM yourtable WHERE (id < (INSERT_ID() - 500))
但是這將是非常不可靠的。
這會導致一個問題,因爲每個帖子的auto_increment id是一致的,但用戶可能會改變?.. 。例如,如果克里斯20天前添加了20條記錄,但薩姆今天添加了500條記錄,那麼克里斯的記錄會下降嗎? 是否有可能使500限制用戶依賴? –
這使得它更加困難,我建議你添加時間戳字段,並且只需在刪除查詢中添加一個'... AND(userId ='Chris')'。 –
我想我會放棄使用一個月的想法,只關注500條記錄,因爲有些用戶可能會放假,並且不會在一個月內使用該系統。雖然我不知道如何計算記錄,並在擊中魔法500之後找出最老的一個:-S –
我是「永不刪除任何東西」的思想流派。你爲什麼要刪除東西? _尤其是當你使用它來塑造模特嗎?所有的模型都會在你沒有意識到的情況下發生微妙的變化,你將不得不不斷重新考慮因素。如果在多年的時間內想要保留1,000條記錄但由於刪除了所有內容而無法完成,會發生什麼情況? – Ben
我會在兩個單獨的步驟中做到這一點:(1)在查詢中使用'limit'來消耗*這個數據,所以他們最多考慮500條記錄。 (2)每隔一段時間運行一次批處理,以清除每個人的無關記錄,如果你真的想的話。 @Ben可能是正確的:爲什麼要刪除它? (限制:http://dev.mysql.com/doc/refman/5.1/en/select.html#id932167) – grossvogel