• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQL:一つを除いてすべてのフィールドを選択)

MySQLのテーブル間でフィールドを移す方法

このQ&Aのポイント
  • MySQLのテーブル間で特定のフィールドを除いてデータを移す方法を教えてください。
  • 具体的には、TABLE1からTABLE2にIDフィールド以外の全てのフィールドを移したいです。
  • フィールドを一つ一つ書くことなく、一括で移す方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>TABLE2の構造は >ID2 >NUMBER2 最初と命題違うと回答しようがないのですが・・・ >NUMBER2は無作為に生成される番号 無作為に作成される番号のロジックがわからない、RANDでよい? AUTOINCREMENT列にはNULLをあてればいいので INSERT INTO TABLE2 SELECT NULL,RAND(),* FROM tmpTable; 列の順番がどうのこうのという話になるなら ALTER TABLE tmpTable MODIFY COLUMN COL_X INT AFTER COL_Y みたいな感じでいれかえてください

2B2B
質問者

お礼

ありがとうございます。できました。最後にPHPのmysql_queryが一回で一つのクエリしか実行できないことに嵌りましたが、クエリを一つ一つ実行してやっとできました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

テンポラリテーブル経由でやるのが妥当では? CREATE TEMPORARY TABLE tmpTable SELECT * from table1; ALTER TABLE tmpTable DROP ID; INSERT INTO TABLE2 SELECT * FROM tmpTable;

2B2B
質問者

お礼

ありがとうございます。それならたぶんできると思います。 もう少し質問させていただきますが、 TABLE2の構造は ID2 NUMBER2 COL1 COL2 .... COL50 COL1からCOL50まではTABLE1から移されたデータのことでID2はAUTOINCREMENTでNUMBER2は無作為に生成される番号のこと。 INSERT INTO TABLE2 SELECT * FROM tmpTable;のようにすればCOL1とCOL2はID2とNUMBER2に移されてしまうんじゃないんですか??どうやってどのフィールドに格納するかを指定できますか?50のフィールドの名前を一つ一つ書くの?ほかにテンポラリテーブルを作りますか? お手間をおかけしますが、またよろしくお願いします。

回答No.1

私の知る限りでは、そのような事の出来る方法は無いです。 もしTABLE1の構造を変えても良いのであれば、alter tableでIDをdropしてからならselect *で可能です。

2B2B
質問者

お礼

ご回答ありがとうございます。

関連するQ&A