INSERT INTO...SELECT を使用してターゲット テーブルにすべての列を挿入します
ワイルドカード (*) を選択した INSERT INTO ステートメント。問題のトラブルシューティングを行い、有効な解決策を見つけてみましょう。
列名を指定せずに (*) を使用してすべての列を選択すると、エラーが発生します。 MySQL マニュアルで詳しく説明されているように、正しい構文では、列名を明示的にリストする必要があります。
正しいコードは次のとおりです:
INSERT INTO this_table_archive (col1, col2, ..., coln) SELECT col1, col2, ..., coln FROM this_table WHERE entry_date < '2011-01-01 00:00:00';
col1、col2、...、coln を置き換えます。
ID 列に関しては、両方のテーブルに自動インクリメント ID があり、どちらかにデータがすでに存在する場合テーブルの場合、潜在的な重複キーの競合を避けるために、クエリの列リストから ID を省略することを検討してください。
空のターゲット テーブルの場合、この省略によって問題は発生しません。ただし、データを含むテーブルの場合、id 列を除外すると、コピーされた行に対して新しい一意の ID が確実に生成されます。
以上がINSERT INTO...SELECT を使用して MySQL で 1 つのテーブルから別のテーブルにすべての列を正しく挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。