Trouver les doublons avec PostgreSQL
Nous avons un tableau de photos avec les colonnes suivantes:
id, merchant_id, url
cette table contient les valeurs en double pour la combinaison merchant_id, url
. il est donc possible qu'une seule ligne apparaît plus à plusieurs reprises.
234 some_merchant http://www.some-image-url.com/abscde1213
235 some_merchant http://www.some-image-url.com/abscde1213
236 some_merchant http://www.some-image-url.com/abscde1213
Quelle est la meilleure façon de supprimer ces doublons?
(J'utilise PostgreSQL 9.2 et Rails 3.)
- Est votre colonne d'ID uniques? Je vois 234 3 fois, mais vous dire que votre merchant_sign et l'url sont des valeurs en double.
- Double Possible de stackoverflow.com/questions/1746213/...
- désolé pour la confusion. l'id dans l'exemple ci-dessus doit être unique. merci pour la bonne édition. la solution ici stackoverflow.com/questions/1746213/... ne fonctionne pas pour mon cas.
Vous devez vous connecter pour publier un commentaire.
Voici mon prendre sur elle.
N'hésitez pas à jouer avec la commande par d'adapter les enregistrements que vous souhaitez supprimer de votre cahier des charges.
SQL Violon => http://sqlfiddle.com/#!15/d6941/1/0
SQL Violon pour Postgresql 9.2 n'est plus pris en charge; la mise à jour de SQL Violon pour postgresql 9.3
ROW_NUMBER() OVER(PARTITION BY merchant_Id, url ORDER BY id asc)
La deuxième partie de sgeddes réponse ne fonctionne pas sur Postgres (le violon utilise MySQL). Voici une version mise à jour de sa réponse à l'aide de Postgres: http://sqlfiddle.com/#!12/6b1a7/1
Je vois un couple d'options pour vous.
Pour un moyen rapide de le faire, utiliser quelque chose comme ceci (il suppose que votre colonne ID n'est pas unique, comme vous le mentionnez 234 plusieurs fois ci-dessus):
Ici est la SQL Violon.
Vous devrez ajouter à vos contraintes retour à la table si vous en avez.
Si votre colonne ID est unique, vous pourriez faire quelque chose comme de garder votre plus bas id:
Et la Violon.
ERROR: relation "p1" does not exist