簡體   English   中英

MYSQL:將一個表插入另一個表的開頭並設置auto_increment

[英]MYSQL: Insert one table into the beginning of another and set the auto_increment

我有php-script,每30秒發布一次

  • 當前date_time(從2016-01-27開始,請參見下文)
  • 並對應一些實時數據(Cian)

到MYSQL表A (約100K列)。 A如下所示(sql_id是AUTO_INCREMENT列號):

在此處輸入圖片說明

另外,我有表B (約10萬列),該表由與A相同的數據組成,但用於上一時期(2016年1月27日之前)。 因此, A恰好從此刻開始,然后B結束了。

最后,我需要一個表,其中包含聯接數據和:

  • 名稱A (由php-script使用,我無法在php中更改名稱)
  • B數據應在A數據之前(因此, B表應插入到A的開頭,並且數據將按時間順序排列)
  • AUTO_INCREMENT sql_id應該是連續的,並設置為[sql_id(B)+ sql_id(A)+ 1]。 因此,下一個php-script的sql_id將自動正確

在30秒內執行此操作的最佳方法是什么(在腳本發布下一個數據之前)?

解決的辦法是。 可以全部通過sql命令完成。 因此非常快。 每個步驟都可以獨立執行。 但是,如果您的系統有流量,則應該在事務中執行STEP 4和STEP 5。

  1. 創建名為C的表,其結構與A和B相同
  2. 將B中的數據插入C中,但auto_inc的primary_key = NULL

    INSERT INTO C (sql_id,date_time,cian) SELECT NULL, date_time, cian FROM B;

  3. 將A的數據插入C中,但auto_inc的primary_key = NULL

    INSERT INTO C (sql_id,date_time,cian) SELECT NULL, date_time, cian FROM A;

  4. 刪除表A

    DROP TABLE A;

  5. 將表C重命名為A

    ALTER TABLE C RENAME TO A;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM