我正在開發聊天應用程序。如何將數據移動到30天以前的另一個表中?
我有兩個表messages
和message_archives
這兩個表的列是一樣的。
我的messages
表包含1,00,000條記錄。我想從超過30天的郵件中將記錄移至message_archives
。
我的代碼:
$privateMsg = mysql_query("SELECT * FROM messages WHERE created < DATE_SUB(curdate(), INTERVAL 30 DAY)");
if(mysql_num_rows($privateMsg)){
while($getPrivateMsg=mysql_fetch_array($privateMsg)){
mysql_query("INSERT INTO message_archives SET user_id='".$getPrivateMsg['user_id']."', friend_id='".$getPrivateMsg['user_id']."', message='".$getPrivateMsg['message']."', is_view='0', created='".$getPrivateMsg['created']."'");
mysql_query("DELETE FROM messages WHERE id='".$getPrivateMsg['id']."'");
}
echo "Message move to archives older than 30 days";
}else{
echo "Error!! message not moved!!!.";
}
上面的代碼可以正常使用。但我需要自定義我的代碼。我需要它在單個查詢中。有沒有任何快捷方式單一查詢?
如果您的意思是「單個查詢將記錄從一個表移動到另一個表」,這是不可能的;您必須將記錄插入到您的存檔表中,然後將其從郵件表中刪除。您可以做的最接近的事情是創建一個事務 – Barranka 2014-09-24 04:39:54
您可以創建一個導出作業到csv/tsv文件並從消息表中刪除相應的記錄。在單獨的查詢中,您可以使用load infile選項加載完整文件。 – Logan 2014-09-24 04:54:10
是的,我是第一次檢查記錄是否超過30天記錄存在與否。如果存在,則插入到message_archives表中並刪除這些記錄消息表。 – Developer 2014-09-24 04:54:32