MySQL で重複キーのレコードを削除する方法はありますか?
特定の主キーを持つレコードがデータベースにあり、同じキーを持つ別のレコードを追加しようとすると、ON DUPLICATE KEY UPDATE
単にレコードを更新しますが、既に存在する場合にレコードを削除するオプションはありますか? ボタンをクリックするだけのシンプルなイン/アウト機能用です。
MySQL で重複キーのレコードを削除する方法はありますか?
特定の主キーを持つレコードがデータベースにあり、同じキーを持つ別のレコードを追加しようとすると、ON DUPLICATE KEY UPDATE
単にレコードを更新しますが、既に存在する場合にレコードを削除するオプションはありますか? ボタンをクリックするだけのシンプルなイン/アウト機能用です。
これは回避策ですが、機能します:
新しい列を作成し、それを などと呼びdo_delete
、tiny-int にします。それからするOn Duplicate Key Update do_delete = 1;
MySQL のバージョン/接続によっては、同じステートメントで複数のクエリを実行できます。ただし、そうでない場合は、直後に別のクエリを実行してください。いずれにせよ、次のクエリは次のようになりますDelete From [table] Where do_delete = 1;
。このように、新しいエントリの場合、何も削除されません。新しいエントリでない場合は、削除のマークが付けられてから削除できます。
REPLACE INTOを使用します。
replace into some_table
select somecolumn from othertable
新しいデータを挿入するか、同じデータが存在する場合はデータを削除して新しいデータを挿入します
同じことに対する最も近い解決策はREPLACE
ステートメントです。REPLACEのドキュメントは次のとおりです。
同様の質問がMySQL Forumsで行われ、推奨される (そして唯一の) 回答は を使用することでしたREPLACE
。