- ベストアンサー
MySQLのテーブル間でフィールドを移す方法
- MySQLのテーブル間で特定のフィールドを除いてデータを移す方法を教えてください。
- 具体的には、TABLE1からTABLE2にIDフィールド以外の全てのフィールドを移したいです。
- フィールドを一つ一つ書くことなく、一括で移す方法があれば教えてください。
- みんなの回答 (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 みたいな感じでいれかえてください
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
テンポラリテーブル経由でやるのが妥当では? CREATE TEMPORARY TABLE tmpTable SELECT * from table1; ALTER TABLE tmpTable DROP ID; INSERT INTO TABLE2 SELECT * FROM tmpTable;
お礼
ありがとうございます。それならたぶんできると思います。 もう少し質問させていただきますが、 TABLE2の構造は ID2 NUMBER2 COL1 COL2 .... COL50 COL1からCOL50まではTABLE1から移されたデータのことでID2はAUTOINCREMENTでNUMBER2は無作為に生成される番号のこと。 INSERT INTO TABLE2 SELECT * FROM tmpTable;のようにすればCOL1とCOL2はID2とNUMBER2に移されてしまうんじゃないんですか??どうやってどのフィールドに格納するかを指定できますか?50のフィールドの名前を一つ一つ書くの?ほかにテンポラリテーブルを作りますか? お手間をおかけしますが、またよろしくお願いします。
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
私の知る限りでは、そのような事の出来る方法は無いです。 もしTABLE1の構造を変えても良いのであれば、alter tableでIDをdropしてからならselect *で可能です。
お礼
ご回答ありがとうございます。
お礼
ありがとうございます。できました。最後にPHPのmysql_queryが一回で一つのクエリしか実行できないことに嵌りましたが、クエリを一つ一つ実行してやっとできました。