如何将数据从一个表复制到另一个“除”一个场

问题描述:

如何插入到另一个表中除特殊领域如何将数据从一个表复制到另一个“除”一个场

表A

ID(auto_inc) CODE NAME 
1    001  TEST1 
2    002  TEST2 

我想插入代码和NAME到另一个表,但是除了ID之外,因为它是自动增量的

注意:我不想使用“插入表B中的SELECT CODE,NAME FROM TABLE A”,因为我h AVE现有表与周围50个场,我不想要一个

多亏了它写一个任何建议和答复

+1

只需列出列。如果你不想输入它们,你可以从'information_schema.columns'获得它们。 – 2014-09-11 03:37:37

+1

你不能'选择*'减去第一列,你必须写出列。根据你的需要,你可能会使用动态sql,但是我想说要映射你的列。 – sgeddes 2014-09-11 03:37:55

+1

@GordonLinoff你能举个例子吗? – 2014-09-11 03:39:18

这不可能不指定列完成(不包括主键) 。

此问题可能会对您有所帮助。 Copy data into another table

可以使用information_schema.columns得到所有的列:

select group_concat(column_name separator ', ') 
from information_schema.columns c 
where table_name = 'tableA' and 
     column_name <> 'id'; 

这给你的列表中。然后将该列表放入您的代码中。你也可以使用一个准备好的陈述,但是一个准备好的陈述可能是矫枉过正的。

如果这是一次性的事情? 如果是,请插入表A(从表B中选择*) 然后改变表格以删除不需要的列。

+0

这是“在盒子外面”的想法;偶尔我会遇到alter table机制的问题,但是...... – JosephDoggie 2015-10-08 19:10:03

我试图从一张表复制到另一张额外的字段。
源表为TERRITORY_t *原理是创建一个与源表相同的临时表,调整临时表的列字段并将临时表的内容复制到目标表中。

这是我做过什么:

  1. 创建一个名为TERRITORY_temp

一个临时表运行出口

CREATE TABLE IF NOT EXISTS TERRITORY_tempTerritory_Id INT生成SQL(11) NOT NULL, Territory_Name varchar(50)COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY(Territory_Id) )ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

  1. 复制了与 INSERT INTO TERRITORY_tempTerritory_IdTerritory_Name)VALUES (1, '东南'), (2, '西南'), (3,“东北地区'), (4,'NorthWest'), (5,'Central');
  2. 或 INSERT INTO TERRITORY_temp SELECT *从TERRITORY_t

    1. 添加额外的字段(一个或多个),以配合新的表

    2. 复制从临时表到目的地表

    3. INSERT INTO TERRITORY_new SELECT * from TERRITORY_temp

      请提供反馈意见。

    开始=>
开始=>
+0

这就是OP要求的。他们想要跳过原始表中的ID。正确的方法是列出information_schema中的列,并在select子句中使用它。 – Born2Code 2014-12-26 20:28:00