ホームページ  >  記事  >  データベース  >  列をリストせずに MySQL テーブルに重複行を挿入するにはどうすればよいですか?

列をリストせずに MySQL テーブルに重複行を挿入するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-12 14:41:02930ブラウズ

How to Insert Duplicate Rows into a MySQL Table Without Listing Columns?

列リストなしで同じ MySQL テーブルに行をコピーする

MySQL では、「キー 1 のエントリ 'xxx' が重複しています」というエラーが発生することがあります。 " 同じ主キー値が既に含まれているテーブルに行を挿入しようとしたとき。これは、MySQL が主キーに一意の値を強制するためです。

すべてのカラムの手動リストを回避しながらこの問題を解決するには、より簡単な方法があります。

  1. 同じ値で一時テーブルを作成します。スキーマを元のテーブルとして:
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
  1. の主キー列を更新します。一時テーブルを NULL に変更します:
UPDATE tmptable_1 SET primarykey = NULL;
  1. 変更した行を元のテーブルに挿入します:
INSERT INTO table SELECT * FROM tmptable_1;
  1. 一時テーブルを削除します:
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

一時キーで主キーを NULL に設定することで、テーブルの場合、MySQL はメイン テーブルに行を挿入するときに新しい一意の値を自動生成できるため、重複エントリ エラーを回避できます。

さらに確実にするには、INSERT INTO の最後に LIMIT 1 句を追加することを検討してください。行が 1 行のみ挿入されるようにします。

以上が列をリストせずに MySQL テーブルに重複行を挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。