2013-02-12 117 views
4

是否有人可以解释(或指向正确的方向)如何将多行从一个表移动到另一个表,并根据设置的条件从原始表中移除该行?MySQL:将整行从一个复制到另一个并删除原始

我明白

INSERT INTO table2 SELECT * FROM table1 

将数据从一个表复制到另一个,但我需要再取出原稿。之所以建议加快对表格的查询,是因为我应该将所有冗余数据(结束,过期,超过3个月的产品)从主表格移动到另一个表格。有一点背景,我有一张桌子可以放置产品,有些产品已经过期,但产品仍然需要使用。大约有50,000种产品已经过期,2,000种产品已经过期。有一个状态列(int 1 = active,2 = expired等)来确定在前端显示的内容。

我想这个职位是两个问题:

  1. 有没有更好的办法来加快产品表的查询,而不删除过期的项目?
  2. 如果没有,如何从一个表中的行移动到另一个

很多很多的感谢!

回答

6

INSERT INTO表2(column_name1,column_name2)SELECT column_name1, column_name2从表1 WHERE(其中这里子句)

DELETE FROM表1 WHERE(where子句这里)

来源为上述:mysql move row between tables

+0

很好。简单!谢谢 – puks1978 2013-02-12 21:53:50

4

表中50,000条记录确实不是那么多。如果您遇到性能问题,我会查看您的查询和索引以帮助加快性能。由于这些过期的记录仍然需要被访问,因此要维护多个表可能会更困难。

但是,要按照您的要求将数据从一个表移动到另一个表,您只需要运行2个不同的语句。假设您想要移动不活动的产品:

INSERT INTO ProductsBackup SELECT * FROM Products WHERE Status <> 1 
DELETE FROM Products WHERE WHERE Status <> 1 

如果您的列上有标识,则最好指定列名称。但假设ProductId是标识,那么请小心将它们移动到不同的表中,因为您可能不想丢失原始标识,因为它可能指向其他表。

祝你好运。

相关问题