簡體   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