From: | "Christopher Kings-Lynne" <chriskl(at)familyhealth(dot)com(dot)au> |
---|---|
To: | "Markus Bertheau" <twanger(at)bluetwanger(dot)de>, "Peter T(dot) Brown" <peter(at)memeticsystems(dot)com> |
Cc: | "postgres sql list" <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: contracting tables |
Date: | 2001-11-30 08:51:59 |
Message-ID: | GNELIHDDFBOCMGBFGEFOMEKECAAA.chriskl@familyhealth.com.au |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
This is complicated (and I haven't tested it) but it might work:
delete from <yourtable> where oid in (select (select oid from <yourtable>
where <field>=yt.<field>) from <yourtable> yt group by <field>)
Pretty crazy - don't know if it will work!
Chris
> -----Original Message-----
> From: pgsql-sql-owner(at)postgresql(dot)org
> [mailto:pgsql-sql-owner(at)postgresql(dot)org]On Behalf Of Markus Bertheau
> Sent: Friday, 30 November 2001 3:53 PM
> To: Peter T. Brown
> Cc: postgres sql list
> Subject: Re: [SQL] contracting tables
>
>
> On Fri, 2001-11-30 at 00:50, Peter T. Brown wrote:
> > I have a table with many records, some of which are duplicates
> (there is no
> > unique constraints). How can I contract this table to remove
> any of these
> > duplicate records? Like when using GROUP BY in a select
> statement, except
> > that I want to just remove the extra entries from this table
> directly... Any
> > ideas?
>
> If I understood you right, one problem is to identify only one row of a
> duplicate. There is a 'hidden' field oid in every table that is unique.
> It goes like this:
>
> select oid, * from <yourtable>
>
> So you could delete the rows by oid:
>
> delete from <yourtable> where oid = <oid>
>
> HTH
>
> Markus Bertheau
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Gary Stainburn | 2001-11-30 09:19:28 | Re: Fixing faulty dates - select on day part of a date field |
Previous Message | Markus Bertheau | 2001-11-30 07:53:28 | Re: contracting tables |