How to Find Duplicate Rows in PostgreSQL

Last updated July 25, 2026 · By the SaturnSQL team

Group by the columns that should be unique and keep groups with HAVING COUNT(*) > 1. Join the result back to the table when you need to see the full duplicate rows.

SELECT email, COUNT(*) AS occurrences
FROM customers
GROUP BY email
HAVING COUNT(*) > 1
ORDER BY occurrences DESC;

See the full rows

SELECT c.*
FROM customers c
JOIN (
  SELECT email FROM customers GROUP BY email HAVING COUNT(*) > 1
) d ON d.email = c.email
ORDER BY c.email, c.id;

Run this in SaturnSQL

SaturnSQL is a browser-based SQL editor for teams: shared query library, schema-aware autocomplete, and scheduled exports to Google Sheets and Slack.

Try it free

Related PostgreSQL guides

© 2026 Panda Capital Oy Ab. All rights reserved.