繁体   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