Seleccionar duplicados en PostgreSQL

La siguiente consulta devuelve elementos duplicados en table cuyos valores para las columnas column_1 y column_2 son idénticos: SELECT column_1, column_2, COUNT(*) FROM my_table GROUP BY column_1, column_2 HAVING count(*) > 1; Usando esta consulta, podríamos borrar todos los elementos duplicados de forma automática mediante esta otra consulta: DELETE FROM my_table AS main USING ( SELECT column_1, column_2, COUNT(*) FROM my_table GROUP BY (column_1, column_2) HAVING COUNT(*) > 1 ) AS duplicates WHERE main.column_1 = duplicates.column_1 AND main.column_2 = duplicates.column_2; SQLAlchemy Esta misma consulta se puede hacer mediante SQLAlchemy de la siguiente forma: session.execute( select( my_table.column_1, my_table.column_2, func.count(my_table.id).label("count") ).from(my_table).group_by(my_table.column_1).having( func.count(my_table.id) ).all()

October 12, 2018 · 1 min · José Luis Patiño Andrés