重複した MySQL レコードを削除し、1 つだけを保持します
P粉916760429
2023-08-25 15:38:04
<p>重複した MySQL レコードを削除する方法 (ただし 1 つだけ保持)</p>
<p>皆さん、こんにちは。同じ ID のレコードが複数あり、重複したレコードを削除して 1 つだけ保持したいという問題があります。 mysql ステートメントの使用に関するアイデアはありますか? </p>
<p>レコードと重複の数を確認するために次のステートメントがありますが、delete ステートメントを使用すると機能しません。</p>
<pre class="brush:php;toolbar:false;">SELECT
Eメール、
COUNT(メール)
から
連絡先
メールでグループ化
HAVING COUNT(email) > 1;
<p>このステートメントを使用しますが、削除されるのは重複レコード 1 つだけです: </p>
<pre class="brush:php;toolbar:false;">DELETE FROM wp_options WHERE option_id=5 limit 1;</pre>
<p>バッチ処理する方法はありますか? </p>
<p>更新: 次のステートメントを使用していますが、重複レコードをすべて保持せずに削除します: </p>
<pre class="brush:php;toolbar:false;">xhi_options から削除
WHERE オプション ID IN (SELECT オプション ID
FROM (SELECT オプション ID
FROM xhi_options
GROUP BY オプション ID
HAVING COUNT(option_id) > 1) AS T)
削除ステートメントでは、
limit 1
オプションを使用しました。これは、1 つのレコードのみを削除することを意味します。コードを次のように修正してみてください:
リーリーこのメソッドを使用すると、最小の ID 値を持つ行を保持できます
リーリーこれはサンプル リンクです リンク 1
または、
リーリー>
を<
に変更して、最も高い ID を維持することもできますこれはサンプル リンクです リンク 2