MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでの重複キー更新でのINSERT…の実装


新しい行をテーブルに挿入するときに、その行によってUNIQUEインデックスまたはPRIMARY KEYが重複する場合は、エラーが発生する可能性があります。これを修正するには、ON DUPLICATEKEYUPDATEを使用します。これをINSERTステートメントで使用すると、既存の行が新しい値で更新されます。

まずテーブルを作成しましょう-

mysql> create table DemoTable
   -> (
   -> Value int
   -> );
Query OK, 0 rows affected (0.61 sec)

インデックスを作成するためのクエリは次のとおりです-

mysql> create unique index value_index on DemoTable(Value);
Query OK, 0 rows affected (0.77 sec)
Records: 0 Duplicates: 0 Warnings: 0

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable values(40) on duplicate key update Value=Value+1000;
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(50) on duplicate key update Value=Value+1000;
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(40) on duplicate key update Value=Value+1000;
Query OK, 2 rows affected (0.15 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示する-

mysql> select *from DemoTable;

これにより、次の出力が生成されます-

+-------+
| Value |
+-------+
|    50 |
|  1040 |
+-------+
2 rows in set (0.00 sec)

  1. MySQLで重複レコードを置き換えるのに効率的な手法はどれですか?

    重複するレコードを置き換え、挿入中のエラーを回避するには、INSERT ON DUPLICATEKEYUPDATEを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> Id int,    -> Name varchar(20),    -> UNIQUE(Id,Name)    -> ); Query OK, 0 rows affected (0.78 sec) 挿入コマンド-

  2. MySQLで主キーをリセットする

    主キーをリセットするには、最初にTRUNCATEテーブルを使用し、次にALTERTABLEを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1929    (    UserId int NOT NULL AUTO_INCREMENT,    PRIMARY KEY(UserId)    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql>