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

MySQLに重複レコードを挿入しないようにする方法

    MySQLテーブルに行を追加するときに、重複挿入を防ぐ必要がある場合があります。これは、INSERTIGNOREステートメントを使用して簡単に行うことができます。この記事では、MySQLに重複レコードを挿入しないようにする方法を見ていきます。


    MySQLに重複レコードを挿入しないようにする方法

    MySQLに重複レコードを挿入しないようにする手順は次のとおりです。覚えておくべき2つの部分があります。まず、テーブルのUNIQUE列インデックスを作成する必要があります。次に、レコードの重複を避けるために、INSERTIGNOREを使用してデータを挿入する必要があります。

    次のテーブルがあるとしますsales(id、order_date、amount)

    mysql> create table sales(
              id int, 
              order_date date, 
              amount int
              );


    1。一意のインデックスを作成する

    idにUNIQUEインデックスを追加します ALTERTABLEステートメントを使用する列。

    MySQLでUNIQUEインデックスを作成するための構文は次のとおりです。

    alter table table_name ADD UNIQUE INDEX(
            column_name1, 
            column_name2,
            ...
            column_nameN
            );

    これは、UNIQUEインデックスを idに追加するためのSQLクエリです。 販売の列 テーブル。

    mysql> alter table sales ADD UNIQUE INDEX(id);


    2。 INSERT IGNORE

    を使用してデータを挿入します

    次に、INSERTIGNOREを使用してデータを挿入します。

    先に進む前に、MySQLのINSERT IGNOREとは何か、およびINSERTIGNOREはどのように機能するかを見てみましょう。


    INSERT IGNOREとは何ですか?

    INSERT IGNOREは、MySQLテーブルにデータを挿入するときにMySQLにエラーを無視させるコマンドです。


    INSERT IGNOREはどのように機能しますか?

    この例では、 idのUNIQUEインデックスをすでに作成しています。 桁。 INSERTステートメントを使用して重複行のデータを追加すると、MySQLはエラーをスローし、最初の重複行の後でクエリの実行を停止します。

    代わりに、INSERT IGNOREを使用すると、MySQLはエラーを生成せずに重複行の挿入をサイレントに破棄し、クエリの実行を続行します。

    したがって、レコードに重複データが含まれていない場合、MySQLは通常どおりにそのデータを挿入します。重複レコードの場合、MySQLは単にそれを無視します。

    これは、 salesに重複することなくデータを挿入するためのSQLクエリです。 テーブル。

    mysql> mysql> insert ignore into sales(id,order_date,amount)
         values(1, '2021-01-01', 250),
         (1, '2021-01-01', 250),
         (2, '2021-01-02', 200),
         (3, '2021-01-03', 150),
         (2, '2021-01-02', 200);
    Query OK, 3 rows affected (0.10 sec)
    Records: 5  Duplicates: 2  Warnings: 0
    
    mysql> select * from sales;
    +------+------------+--------+
    | id   | order_date | amount |
    +------+------------+--------+
    |    1 | 2021-01-01 |    250 |
    |    2 | 2021-01-02 |    200 |
    |    3 | 2021-01-03 |    150 |
    +------+------------+--------+

    ご覧のとおり、MySQLはエラーを生成せずに重複行の挿入を回避します。

    MySQL用のレポートツールが必要ですか? Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. データベース管理用のMySQLWorkbenchをインストールします

    2. 異なる日付形式でCSVをMySQLにインポートする

    3. 更新参加時のエラー

    4. SQLite-データをCSVファイルにエクスポート