繁体   English   中英

MySQL:将整行从一个复制到另一个并删除原始行

[英]MySQL: Copy entire row from one to another and delete original

有人可以解释(或指向正确的方向)如何将多行从一个表移动到另一个表并根据设定的标准从原始表中删除该行?

我明白

INSERT INTO table2 SELECT * FROM table1

将数据从一个表复制到另一个表但我需要删除原始表。 原因是有人建议加快查询表,我应该将所有冗余数据(已结束,过期,超过3个月的产品)从主表移动到另一个表。

有一些背景知识,我有一个包含产品的表,有些产品已经过期但产品仍然需要访问。 大约有50,000种产品已经过期,2,000种产品已经过期。 有一个状态列(int 1 = active,2 = expired等)来确定在前端显示的内容。

我想这篇文章是2个问题:

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

非常感谢!

INSERT INTO table2(column_name1,column_name2)SELECT column_name1,column_name2 FROM table 1 WHERE(where子句)

DELETE FROM table1 WHERE(where子句)

上面的来源: mysql在表之间移动行

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

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

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

如果列上有Identities,则最好指定列名。 但假设ProductId是Identity,那么请小心将它们移到另一个表中,因为您可能不希望丢失原始ID,因为它可能指向其他表。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM