mysqlデータベースでの重複データ挿入の回避

1439 ワード

mysqlデータベースでの重複データ挿入の回避
まず、データベースに重複データが存在し、データ量が大きい前に重複フィールドを一意のインデックスとして設定していません.sql文を変更して、挿入時に重複挿入を回避します.
ネット上でいくつかのブログを見て、すべて唯一のインデックスを設定してignoreあるいはREPLACE INTOあるいはON DUPLICATE KEY UPDATEを使います
on duplicate key update
データが存在する場合、更新操作がトリガーされ、後の文のupdateINSERT INTO tb_addrbook(num,name,mobile) VALUE('1001',' ','13112345678') ON DUPLICATE KEY UPDATE name= ' ',mobile='13112345678'が実行されます.
ON DUPLICATE KEY UPDATE以降の文が条件判定条件ではない判定は、あなたの唯一のインデックスに基づいてUPDATEがトリガーされた後にUPDATEが実行された後の文が更新されると判断します.updateの後に条件判定が書かれていると、更新できない操作しか挿入できません
replace into
データが存在する場合は削除再挿入REPLACE INTO `student`(`name`, `age`) VALUES('Jack', 18);insert ignore into
挿入時にデータが存在する場合、今回の挿入データINSERT IGNORE INTO `student`(`name`, `age`) VALUES('Jack', 18);は無視されます.以下は参照リンクです.https://www.cnblogs.com/Eric-zhao/p/6655994.html
https://blog.csdn.net/t894690230/article/details/77996355
ただし、データベース内のデータに重複フィールドが存在し、一意のインデックスまたはプライマリ・キーが設定されていない場合、上記の構文は使用できません.その後、insert if not existsを使用することがわかりました.
insert if not exists INSERT INTO TABLE (field1, field2, fieldn) SELECT 'field1','field2','fieldn'
FROM

WHERE
NOT EXISTS (
SELECT
*
FROM

WHERE
= ?
)

参照リンク:https://blog.csdn.net/fly910905/article/details/79634483