Supprimez les enregistrements MySQL en double et n'en conservez qu'un seul
P粉916760429
2023-08-25 15:38:04
<p>Comment supprimer les enregistrements MySQL en double (mais n'en conserver qu'un seul)</p>
<p>Bonjour à tous, j'ai un problème, j'ai plusieurs enregistrements avec le même identifiant et je souhaite supprimer les enregistrements en double mais n'en garder qu'un. Des idées sur l'utilisation des instructions MySQL ? </p>
<p>J'ai cette instruction pour voir le nombre d'enregistrements et de doublons, mais cela ne fonctionne pas pour moi lorsque j'utilise l'instruction delete : </p>
<pre class="brush:php;toolbar:false;">SELECT
e-mail,
COUNT(e-mail)
DEPUIS
Contacts
GROUPER PAR email
AVOIR COUNT(e-mail) > 1;</pre>
<p>J'utilise cette instruction, mais elle ne supprime qu'un seul enregistrement en double : </p>
<pre class="brush:php;toolbar:false;">DELETE FROM wp_options WHERE option_id=5 limite 1;</pre>
<p>Existe-t-il un moyen de traiter par lots ? </p>
<p>Mise à jour : j'utilise cette instruction, mais elle supprime tous les enregistrements en double sans en conserver un : </p>
<pre class="brush:php;toolbar:false;">DELETE FROM xhi_options
OÙ option_id IN (SELECT option_id
FROM (SELECT option_id
DE xhi_options
GROUPE PAR option_id
AVOIR COUNT(option_id) > 1) AS T)</pre></p>
Dans votre instruction de suppression, vous avez utilisé l'option
limit 1
, ce qui signifie que vous ne supprimerez qu'un seul enregistrement.Essayez de corriger votre code comme ceci :
Vous pouvez utiliser cette méthode pour conserver les lignes avec la valeur d'identifiant la plus basse
Ceci est un exemple de lien Lien 1
Ou vous pouvez changer
>
更改为<
pour conserver l'identifiant le plus élevéCeci est un exemple de lien Lien 2