sql >> データベース >  >> RDS >> Mysql

MySQLの同じテーブルに挿入する方法は?

    負荷テストのために大量のデータをすばやく作成する必要がある場合があります。 MySQLの同じテーブルを選択して挿入できます。このアプローチにより、既存のテーブルが急速に大きくなります。それは遊ぶためにたくさんのレコードを与えます。これを行ういくつかの方法があります。

    MySQLの同じテーブルに挿入

    構文

    INSERT INTO table_name ( field1, field2,...fieldN )
                           SELECT field1, field2, fieldN from table_name;


    テーブルの場合table_namea、b、c

    +------+------+------+
    |   a  |   b  |   c  |
    +------+------+------+
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    |   3  |   3  |   3  |
    +------+------+------+

    MySQLの同じテーブルにテーブルのすべてのレコードを挿入します

    mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name;
    +------+------+------+
    |   a  |   b  |   c  |
    +------+------+------+
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    |   3  |   3  |   3  |
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    |   3  |   3  |   3  |
    +------+------+------+

    MySQLの同じテーブルにテーブルのいくつかのレコードを挿入します

    mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3;
    +------+------+------+
    |   a  |   b  |   c  |
    +------+------+------+
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    |   3  |   3  |   3  |
    |   1  |   2  |   3  |
    |   3  |   3  |   3  |
    +------+------+------+

    これらのフィールドの1つが主キーである場合、またはフィールドの一意性制約がある場合は、重複値エラーが発生する可能性があります。これを回避する方法は次のとおりです。

    重複せずにMySQLの同じテーブルに挿入

    構文

    INSERT INTO table_name ( field1, field2,...fieldN )
                           SELECT field1, field2, fieldN from table_name
                           ON DUPLICATE KEY
                           UPDATE primary_key_field=<expression> ;

    テーブルの場合table_name 列がa、b、c、cが主キーです

    +------+------+------+
    |   a  |   b  |   c  |
    +------+------+------+
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    +------+------+------+

    MySQLの同じテーブルにテーブルのすべてのレコードを挿入します

    mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name ON DUPLICATE KEY c=c+1;
    +------+------+------+
    |   a  |   b  |   c  |
    +------+------+------+
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    |   1  |   2  |   4  |
    |   4  |   5  |   7  |
    |   7  |   8  |  10  |
    +------+------+------+

    MySQLの同じテーブルにテーブルのいくつかのレコードを挿入します

    mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3 ON DUPLICATE KEY c=c+1;
    +------+------+------+
    |   a  |   b  |   c  |
    +------+------+------+
    |   1  |   2  |   3  |
    |   4  |   5  |   6  |
    |   7  |   8  |   9  |
    |   1  |   2  |   5  |
    +------+------+------+

    MySQLで一括挿入を行う方法について詳しく読むことができます

    1. SQL Serverで数百万行の大きなテーブルを更新するにはどうすればよいですか?

    2. MariaDB DATABASE()の説明

    3. PostgreSQLでのcbrt()のしくみ

    4. Fedora33にPostgreSQL12をインストールする方法