データを挿入するときに、重複したデータを挿入するという問題が発生する可能性がありますが、これらのデータには重複した値が許可されていません。 テーブル stuInfo を作成します ( id INT NOT NULL COMMENT 'シリアル番号', 名前 VARCHAR(20) NOT NULL デフォルト '' COMMENT '名前', age INT NOT NULL DEFAULT 0 COMMENT '年齢', 主キー (id)、 ユニークキー uniq_name(name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='student table'; mysql> stuInfo に INSERT INTO (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25),(2,'aa',24); エラー 1062 (23000): キー 'PRIMARY' のエントリ '1' が重複しています 解決: 1. 無視するignore を使用すると、挿入された値が重複する主キー (PRIMARY KEY) または一意キー (UNIQUE KEY) に遭遇したときに、後続のレコードの挿入に影響を与えずに重複レコードを自動的に無視できます。 stuInfo (name,birthday,is_deleted) に IGNORE を挿入します。VALUES ('yoona','1990-01-05',0),('aa','1990-01-16',0),('bb','1990-01-17',0); 実行結果: mysql> INSERT IGNORE INTO stuInfo (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25),(2,'aa',24); クエリは正常、2 行が影響を受けました (0.02 秒) 記録: 3 重複: 1 警告: 0 mysql> stuInfo から * を選択します。 +----+-------+-----+ | ID | 名前 | 年齢 | +----+-------+-----+ | 1 | ユナ | 20 | | 2 | 単3 | 24 | +----+-------+-----+ セット内の 2 行 (0.00 秒) 実行結果から、影響を受けるのは 2 行のみであることがわかります。つまり、(1,'yoona',20) のデータが挿入され、(1,'xiaosi',25) の重複データは自動的に無視され、(2,'aa',24) の重複しないデータは引き続き挿入され、重複データの影響を受けません。 2. 交換重複する主キーまたは一意のキーを持つレコードを replace を使用して挿入する場合は、挿入する前にテーブル内の重複レコードを削除します。 mysql> REPLACE INTO stuInfo (name,birthday,is_deleted) VALUES ('yoona','1990-01-15',0),('yoona','1990-02-16',0),('aa','1990-01-13',0); クエリは正常、4 行が影響を受けました (0.02 秒) 記録: 3 重複: 1 警告: 0 実行結果: mysql> stuInfo から * を選択します。 +----+-------+------------+------------+ | ID | 名前 | 誕生日 | 削除済み | +----+-------+------------+------------+ | 21 | ユナ | 1990-02-16 | 0 | | 22 | 単行本 | 1990-01-13 | 0 | +----+-------+------------+------------+ セット内の 2 行 (0.00 秒) 出力情報から、4 行が影響を受けていることがわかります。つまり、最初に ('yoona','1990-01-15',0) が挿入され、次に ('yoona','1990-01-15',0) が削除されたことを意味します。 3. 重複キーの更新について挿入されたレコードが重複する主キーまたは一意キーに遭遇すると、後で定義された UPDATE 操作が実行されます。これは、最初に挿入操作を実行し、次に主キーまたは一意キーに基づいて更新操作を実行することと同じです。 stuInfo が存在する場合はテーブルを削除します。 テーブル stuInfo を作成します ( id INT NOT NULL COMMENT 'シリアル番号', 名前 VARCHAR(20) NOT NULL デフォルト '' COMMENT '名前', age INT NOT NULL DEFAULT 0 COMMENT '年齢', 主キー (id)、 ユニークキー uniq_name(name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='student table'; ON DUPLICATE KEY UPDATE 後の VALUES の説明: VAULES(age)は挿入するレコードの値を参照します 年齢はテーブル自体の値、つまり挿入された値を参照します。 (1)第一のシナリオ: #VALUES(年齢) 挿入する値 25 重複キーがある場合、stuInfo (id,name,age) に VALUES (1,'yoona',20),(1,'xiaosi',25) を挿入して更新 age = VALUES(age) + 1 を実行します。 は以下と同等です: stuInfo (id,name,age) に VALUES (1,'yoona',20) を挿入します。 stuInfo を更新 SET 年齢 = VALUES(年齢) + 1 ここで、id = 1; 実行結果: mysql> stuInfo (id,name,age) に VALUES (1,'yoona',20),(1,'xiaosi',25) を挿入し、重複キーを更新します。age = VALUES(age) + 1; クエリは正常、3 行が影響を受けました (0.01 秒) 記録: 2 重複: 1 警告: 0 mysql> stuInfo から * を選択します。 +----+-------+-----+ | ID | 名前 | 年齢 | +----+-------+-----+ | 1 | ユナ | 26 | +----+-------+-----+ セット内の 1 行 (0.00 秒) (2)2番目の状況: #年齢値20が挿入されました 重複キー更新 age = age + 1 がある場合、stuInfo (id,name,age) に VALUES (1,'yoona',20),(1,'xiaosi',25) を挿入します。 は以下と同等です: stuInfo (id,name,age) に VALUES (1,'yoona',20) を挿入します。 stuInfo を更新 SET 年齢 = 年齢 + 1 ここで、id = 1; 実行結果: mysql> INSERT INTO stuInfo (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25) ON DUPLICATE KEY UPDATE age = age + 1; クエリは正常、3 行が影響を受けました (0.02 秒) 記録: 2 重複: 1 警告: 0 mysql> stuInfo から * を選択します。 +----+-------+-----+ | ID | 名前 | 年齢 | +----+-------+-----+ | 1 | ユナ | 21 | +----+-------+-----+ セット内の 1 行 (0.00 秒) 重複して挿入されたデータに遭遇した場合、ON DUPLICATE KEY UPDATE を使用して挿入されたデータを変更します。これを使用して、重複して挿入されたデータを取得する (フィールド名を直接使用) か、挿入される重複データを取得する (値 (フィールド名)) ことができます。重複したデータは挿入されません。 挿入されたデータを繰り返します: 上記の例では (1,'yoona',20) 挿入するデータを繰り返します: 上記の例では (1,'yoona',25) MySQL の主キーと一意キーの重複挿入の解決策の詳細な説明はこれで終わりです。MySQL の主キーと一意キーの重複挿入に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vue で計算プロパティを使用する際の知識ポイントのまとめ
>>: a href=# と a href=javascript:void(0) の違いの詳細な説明
Win10 システムでの MySQL 8.0.20 のインストールと設定の超詳細なチュートリアルMy...
1. 新しいUIプロジェクトを作成するまず、私たちの UI は ColorUI に基づいています。C...
1. Java環境jdk1.8を準備するJavaがインストールされているかどうかを確認します。イン...
レスポンシブレイアウト開発の基礎知識この章は主に以下の部分に分かれています• レスポンシブデザインを...
この CSS リセットは、Eric Meyers の CSS リセットに基づいて変更されており、特に...
目次基本的な説明AST 解析レンダリング機能通常コンポーネントと動的コンポーネントの比較ファクトリ関...
例:本日、前回のオフィスコラボレーションプラットフォーム実験の続きをしていたところ、仮想マシンは以前...
MySQL は、ユーザーごとに 2 つの異なるバージョンを提供します。 MySQL コミュニティ サ...
まず、Alibaba Cloud の公式チュートリアルをご覧ください。ファイルの説明: 1. 証明書...
最近、本番環境のデータベースがログデータを狂ったように書き込み、主キー値のオーバーフローを引き起こし...
以下に、トレーニング機関からのヒントと私自身の要約をいくつか示します。以下のインデックスの内容を説明...
この記事では、ミニプログラムで製品属性選択または仕様選択を実装するための具体的なコードを参考までに共...
クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...
目次1. 概要2. シンプルなクラスを定義する3. 継承4. public、private、prot...
最初のもの: CSSの位置プロパティの使用 <スタイル タイプ="text/css&...