我有一個mysql表,每個用戶都有1行登錄到我們的網站。我只想保留每個用戶的最近10次左右登錄。一些用戶每天登錄;其他人每月只有一次。所以我不能只刪除超過一定時間的行。mysql限制每個用戶在登錄日誌表中的行
如何刪除特定用戶的第11行和更高行(當按login_date
排序時)?我有user_id
和login_date
的列。對於每個user_id
我只想保留最近的10行;其餘的應該被刪除(這將通過每天晚上的cron作業運行;如果在白天每個用戶有超過10個登錄記錄,只是試圖防止數據隨着時間變得太大)。
或者更好,使用[INSERT觸發器(http://dev.mysql.com/doc/refman/5.6/en/create -trigger.html)刪除額外的行。 – 2011-05-23 02:53:10
如果該用戶的行數超過10行,我喜歡插入後刪除的想法。 mysql中有一種簡單的方法可以從第10行結果中獲取值嗎?我想要做的事情如下:DELETE * FROM user_logins WHERE user_id = xxx AND login_date <[第10行WHERE user_id = xxx ORDER BY login_date DESC]的值 – 2011-05-23 02:56:45
@mu太短:觸發器在mysql中很瘋狂,所以我害羞地建議他們,除非我知道他們正在使用工作實施的數據庫。 – richo 2011-05-23 03:09:32