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を使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。