15

MySQL で重複キーのレコードを削除する方法はありますか?

特定の主キーを持つレコードがデータベースにあり、同じキーを持つ別のレコードを追加しようとすると、ON DUPLICATE KEY UPDATE単にレコードを更新しますが、既に存在する場合にレコードを削除するオプションはありますか? ボタンをクリックするだけのシンプルなイン/アウト機能用です。

4

5 に答える 5

12

これは回避策ですが、機能します:

新しい列を作成し、それを などと呼びdo_delete、tiny-int にします。それからするOn Duplicate Key Update do_delete = 1;

MySQL のバージョン/接続によっては、同じステートメントで複数のクエリを実行できます。ただし、そうでない場合は、直後に別のクエリを実行してください。いずれにせよ、次のクエリは次のようになりますDelete From [table] Where do_delete = 1;。このように、新しいエントリの場合、何も削除されません。新しいエントリでない場合は、削除のマークが付けられてから削除できます。

于 2015-01-09T19:46:05.447 に答える
5

REPLACE INTOを使用します。

replace into some_table
select somecolumn from othertable

新しいデータを挿入するか、同じデータが存在する場合はデータを削除して新しいデータを挿入します

于 2012-07-15T19:54:20.190 に答える
1

同じことに対する最も近い解決策はREPLACEステートメントです。REPLACEのドキュメントは次のとおりです。

同様の質問がMySQL Forumsで行われ、推奨される (そして唯一の) 回答は を使用することでしたREPLACE

于 2012-07-15T19:53:55.927 に答える