Re: Removing duplicate rows in table - Mailing list pgsql-general

From Muhammad Usman Khan
Subject Re: Removing duplicate rows in table
Date
Msg-id CAPnRvGs1+uqWe1ny0jMJapYMNR+i=jDvWRL4YwsgsUdAQFSNGg@mail.gmail.com
Whole thread Raw
In response to Removing duplicate rows in table  (Rich Shepard <rshepard@appl-ecosys.com>)
Responses Re: Removing duplicate rows in table
List pgsql-general
Hi,
You can try the following CTE which removes all the identical rows and only leave single row

WITH CTE AS (
  SELECT ctid, ROW_NUMBER() OVER (PARTITION BY proj_nbr, proj_name, start_date, end_date, description, notes ORDER BY proj_nbr) AS rn
  FROM projects
  WHERE proj_nbr = '4242.02'
)
DELETE FROM projects
WHERE ctid IN (
  SELECT ctid FROM CTE WHERE rn > 1
);


On Tue, 10 Sept 2024 at 20:07, Rich Shepard <rshepard@appl-ecosys.com> wrote:
I've no idea how I entered multiple, identical rows in a table but I want to
delete all but one of these rows.

Here's an example:

bustrac=# select * from projects where proj_nbr = '4242.01';
  proj_nbr |   proj_name    | start_date |  end_date  |  description  | notes
----------+----------------+------------+------------+---------------+-------
  4242.01  | Expert witness | 2008-10-15 | 2008-10-28 | Consol Energy |
  4242.01  | Expert witness | 2008-10-15 | 2008-10-28 | Consol Energy |
  4242.01  | Expert witness | 2008-10-15 | 2008-10-28 | Consol Energy |
  4242.01  | Expert witness | 2008-10-15 | 2008-10-28 | Consol Energy |
(4 rows)

How do I clean this up so there's only a single row for this project number?

TIA,

Rich


pgsql-general by date:

Previous
From: Thomas Munro
Date:
Subject: Re: Error:could not extend file " with FileFallocate(): No space left on device
Next
From: Muhammad Usman Khan
Date:
Subject: Re: Recommendations on improving the insert on conflict do nothing performance