traer repetidos registros quitar mostrar duplicados datos como buscar sql database ruby-on-rails-3 duplicates postgresql-9.2

repetidos - Encontrar filas duplicadas con PostgreSQL



traer registros repetidos postgresql (3)

Aquí está mi opinión sobre esto.

select * from ( SELECT id, ROW_NUMBER() OVER(PARTITION BY merchant_Id, url ORDER BY id asc) AS Row FROM Photos ) dups where dups.Row > 1

Siéntase libre de jugar con el orden por adaptar los registros que desea eliminar a su especificación.

SQL Fiddle => http://sqlfiddle.com/#!15/d6941/1/0

SQL Fiddle para Postgres 9.2 ya no es compatible; actualizando SQL Fiddle a postgres 9.3

Tenemos una tabla de fotos con las siguientes columnas:

id, merchant_id, url

esta tabla contiene valores duplicados para la combinación merchant_id, url . por lo que es posible que una fila aparezca más varias veces.

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

¿Cuál es la mejor manera de eliminar esas duplicaciones? (Uso PostgreSQL 9.2 y Rails 3.)


La segunda parte de la respuesta de Sgeddes no funciona en Postgres (el violín usa MySQL). Aquí hay una versión actualizada de su respuesta usando Postgres: http://sqlfiddle.com/#!12/6b1a7/1

DELETE FROM Photos AS P1 USING Photos AS P2 WHERE P1.id > P2.id AND P1.merchant_id = P2.merchant_id AND P1.url = P2.url;


Veo un par de opciones para ti.

Para una forma rápida de hacerlo, use algo como esto (se supone que su columna de ID no es única ya que menciona 234 varias veces más arriba):

CREATE TABLE tmpPhotos AS SELECT DISTINCT * FROM Photos; DROP TABLE Photos; ALTER TABLE tmpPhotos RENAME TO Photos;

Aquí está el violín de SQL .

Tendrá que agregar sus limitaciones a la tabla si tiene alguna.

Si su columna de ID es única, puede hacer algo como mantener su ID más baja:

DELETE FROM P1 USING Photos P1, Photos P2 WHERE P1.id > P2.id AND P1.merchant_id = P2.merchant_id AND P1.url = P2.url;

Y el Fiddle .