我有一个每天接收公众意见的系统。每天早上启动时,我都想运行一个 VB 脚本,将最新的 500 个条目之外的每个输入移动到备份表中。这是系统活动的完整档案。
我想将初始 500 行(按列 k 排序)之外的每一行从一个表移动到另一个表(从表“活动”中插入行到表“存档”中,然后从表“活动”中删除行)。
我希望能够将其作为单个 SQL 语句来执行,但并没有取得太大的成功。是否有一种合理的方法可以将其作为单个(嵌套?)Jet SQL 语句来执行?是否必须编写一些中间 VB 脚本来处理此操作?
提前致谢,
看起来我可能不得不做这样的事情。
INSERT INTO ChatArchive (MsgId, MsgText, Filtered, LastFetched) SELECT MsgID, MsgText, Filtered, LastFetched FROM ChatCurrent WHERE ID <= (SELECT MAX(ID) from ChatCurrent) - 500;
DELETE FROM ChatCurrent WHERE MsgId <= (SELECT MAX(MsgId) FROM ChatArchive);
500 这里是我想保留在系统中的行数。另一种方法是将 MsgIds 列表存储在某处(在 VB 中)并从中构造第二个查询。
为什么不以某种方式标记旧记录,以便普通用户不再查看它们?当您想要查询两个表等中的数据时,使用存档表将是一件很痛苦的事情。