Re: Removing duplicate rows in table

From: Muhammad Usman Khan <usman(dot)k(at)bitnine(dot)net>
To: Rich Shepard <rshepard(at)appl-ecosys(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Removing duplicate rows in table
Date: 2024-09-12 04:06:00
Message-ID: CAPnRvGs1+uqWe1ny0jMJapYMNR+i=jDvWRL4YwsgsUdAQFSNGg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)appl-ecosys(dot)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
>
>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Muhammad Usman Khan 2024-09-12 04:35:38 Re: Recommendations on improving the insert on conflict do nothing performance
Previous Message Andreas Joseph Krogh 2024-09-12 03:41:03 Effects of REVOKE SELECT ON ALL TABLES IN SCHEMA pg_catalog FROM PUBLIC