2011-07-08 62 views
1

我有一个产品的大型数据库,每天我都希望运行一个将active ='1'的行移动到新表中并删除原始行的脚本。将行迁移到新表中,然后删除它们

但我似乎无法找到适当的Mysql命令来完成迁移。

如果有人能够说明情况,那将是非常好的。

非常感谢

回答

0

你应该能够完成这个以下

CREATE TABLE NewTable LIKE OldTable; 

INSERT INTO NewTable 
SELECT * FROM OldTable WHERE Active = 1; 

DELETE FROM OldTable WHERE Active = 1; 

正如好奇,什么是这样做的呢?如果你担心模糊行,你可以做删除如下

DELETE OldTab FROM OlTable AS OldTab 
INNER JOIN NewTable AS NewTab 
ON OldTab.ID = NewTab.ID 
+1

小心模糊的边缘...新行可能会在这两个语句之间插入active = 1,从而产生不希望的结果。 – Randy

+0

是的,如果你担心你可以在插入和删除期间锁定表格。尽管我从旧桌子被丢弃的问题来看。 – Kibbee

0

没有任何细节,这里是你会做什么:

创建一个INSERT语句到新表从AS SELECT旧表WHERE活动= 1。

创建DELETE语句,该语句从第一个表中删除它在第二个表中找到的任何行。

commit;

+0

如果有代码,我会给它一个+1 –

+0

@Clodoaldo - 如果Randy键入OP的代码,你会给它一个+2;) – KevinDTimm

相关问题