2014-09-11 128 views
1

如何插入到另一個表中除特殊領域如何將數據從一個表複製到另一個「除」一個場

表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

回答

1

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

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

這給你的列表中。然後將該列表放入您的代碼中。你也可以使用一個準備好的陳述,但是一個準備好的陳述可能是矯枉過正的。

1

如果這是一次性的事情? 如果是,請插入表A(從表B中選擇*) 然後改變表格以刪除不需要的列。

+0

這是「在盒子外面」的想法;偶爾我會遇到alter table機制的問題,但是...... – JosephDoggie 2015-10-08 19:10:03

1

我試圖從一張表複製到另一張額外的字段。
源表爲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;

  • 複製了與 INSERT INTO TERRITORY_tempTerritory_IdTerritory_Name)VALUES (1, '東南'), (2, '西南'), (3,「東北地區'), (4,'NorthWest'), (5,'Central');
  • 或 INSERT INTO TERRITORY_temp SELECT *從TERRITORY_t

  • 添加額外的字段(一個或多個),以配合新的表

  • 複製從臨時表到目的地表

  • INSERT INTO TERRITORY_new SELECT * from TERRITORY_temp

    請提供反饋意見。

    +0

    這就是OP要求的。他們想要跳過原始表中的ID。正確的方法是列出information_schema中的列,並在select子句中使用它。 – Born2Code 2014-12-26 20:28:00

    相關問題