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