7

あるテーブルを別のテーブルにコピーしたい。

たとえば、私はテーブルData(ID, time, serial_number...)を持っていて、Temp_data(ID, time, serial_number...)

主キーなしですべてのアイテムをコピーする方法(ID)。

私はMYSQLを使用しています、私は試しましたINSERT INTO Data SELECT * FROM Temp_data;

問題は主キーにあります。両方のテーブルにすでに値があり、ID以外のすべてをコピーする必要があります。

4

3 に答える 3

9

の代わりにSELECT *、必要な列を綴ります。

INSERT INTO Data (time, serial_number...)
  SELECT (time, serial_number...) FROM Temp_data;
于 2012-05-28T18:06:59.607 に答える
6

クエリで列名を定義する必要があります。定義しないと、すべての列が挿入されます

INSERT INTO tbl2 (column1, column2)
    SELECT tbl1.col1, tbl1.col2 FROM tbl1
于 2012-05-28T18:09:21.303 に答える
3

列を更新する必要があるたびに、それらをコピーするコードも更新する必要があるため、これは非常に厄介な問題です。問題を回避し、コードを将来にわたって利用できるようにするために使用するソリューションは次のとおりです。

    DROP TABLE IF EXISTS TempData;
    CREATE TEMPORARY TABLE TempData (LIKE Data);
    
    INSERT INTO TempData SELECT * FROM Data;
    
    ALTER TABLE TempData CHANGE COLUMN `id` `id` INT(11) NULL, DROP PRIMARY KEY;
    UPDATE TempData SET id = 0;
    
    INSERT INTO Data SELECT * FROM TempData;
    DROP TABLE IF EXISTS TempData;

ソーステーブル名が同じであれば、すばやく簡単に作成でき、毎回機能します。

于 2018-07-19T07:03:19.767 に答える