1. ホーム
  2. mysql

[解決済み] すべてのMySQLカラムに対するINSERT INTO...SELECT

2022-09-07 01:57:04

質問

古いデータを移動しようとしています。

this_table >> this_table_archive

ですべてのカラムをコピーしています。 試してみましたが、うまくいきません。

INSERT INTO this_table_archive (*) VALUES (SELECT * FROM this_table WHERE entry_date < '2011-01-01 00:00:00');

注意: テーブルは同じものであり id を主キーとして設定します。

どのように解決するのですか?

正しい構文は マニュアル . これを試してみてください。

INSERT INTO this_table_archive (col1, col2, ..., coln)
SELECT col1, col2, ..., coln
FROM this_table
WHERE entry_date < '2011-01-01 00:00:00';

idカラムがオートインクリメントのカラムで、すでに両方のテーブルにデータがある場合、場合によっては、カラムリストからidを省略し、代わりに新しいidを生成して、元のテーブルにすでに存在するidを挿入しないようにしたいことがあります。ターゲットテーブルが空であれば、これは問題にはならないでしょう。