0
votes

Supprimer duplicaté en fonction de la valeur de 2 rangées

J'ai donc une base de données avec plus de 2000 lignes et je voulais supprimer la valeur en double en fonction de 2 lignes.


Par exemple:

no      server     name
1       serv1       a
2       serv1       b
3       serv2       a
4       serv2       b
5       serv2       c


7 commentaires

Voulez-vous Supprimer les lignes de la table ou tout simplement ne pas les montrer à la suite d'une requête SELECT?


Je veux supprimer les rangées dans la table


Avez-vous seulement ces deux colonnes? Y a-t-il une clé primaire définie? Quelle est votre version mysql?


J'ai édité la question. J'ai un tableau no une clé primaire et ma version SQL est 5.7.21 @Paul SPIEGEL


Ensuite, utilisez la réponse de RAKESH JAKHAR et remplacez ID avec non .


Vous pouvez aussi essayer Ce


D'accord, je vais l'essayer. Merci pour l'aide @Paul SPIEGEL


3 Réponses :


1
votes

Utiliser Sélectionnez Distinct CODE>:

delete t
    from t join
         (select server, name, min(no) as min_no
          from t
          group by server, name
         ) tt
         on t.server = tt.server and t.name = tt.name
    where t.no > tt.min_no;


1 commentaires

Hey, @gordon Linoff.Vous connaissez une façon de supprimer les données en double de la base de données aussi?



1
votes

Il y a beaucoup de façons de faire ce que vous voulez. Si vous recherchez juste SELECT ING Les données sans duplicates, vous pouvez utiliser:

  • distinct XXX

  • groupe par XXX

  • fonction de fenêtre (Row_Number) dans une sous-requête XXX

    Vous supprimez les duplicats comme xxx


2 commentaires

Pouvez-vous me dire comment supprimer la duplicate aussi?


Vous ne pouvez pas supprimer d'une sous-requête - du moins pas dans MySQL.



0
votes

Vous pouvez utiliser la requête suivante pour supprimer des duplicats xxx


0 commentaires