Re: Two questions in a row

From: Mike Mascari <mascarm(at)mascari(dot)com>
To: Andrew Snow <als(at)fl(dot)net(dot)au>
Cc: pgsql-general(at)hub(dot)org
Subject: Re: Two questions in a row
Date: 2000-07-06 08:18:30
Message-ID: 396440D6.AD549A84@mascari.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Andrew Snow wrote:
>
> > > 1. How do you remove one of two identical rows
> > > from a pgsql table ?
> >
> > DELETE FROM t1 WHERE .... wil do the stuff for you. If you don't know
> > the value into the duplicate field just export the database with pg_dump
> > create
> > a unique index onto this field and reimport all your data. Duplicate
> > data will
> > not be inserted.
>
> Another way could be to
> SELECT oid FROM table WHERE ...;
>
> and then delete based on that. However I believe it is possible to have two
> rows have the same oid but usually that isn't the case.

Its not possible to have two rows with the same oid (unless
you've wrapped around the maximum oid by creating at least 4.2
billion records). So you can eliminate duplicates with the query:

DELETE FROM foo WHERE EXISTS
(SELECT f.key FROM foo f WHERE f.key = foo.key AND f.oid <
foo.oid);

Of course, an index on foo.key will dramatically speed up the
above operation.

Hope that helps,

Mike Mascari

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Stephane Bortzmeyer 2000-07-06 08:20:54 Re: Find all the dates in the calendar week?
Previous Message Andrew Snow 2000-07-06 08:11:42 RE: Two questions in a row