Search Postgresql Archives

Re: Update with a Repeating Sequence

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bill Thoen wrote:
Steve Atkins wrote:

On Oct 14, 2008, at 9:04 AM, Bill Thoen wrote:

I've got a table with repeated records that I want to make unique by adding a sequence code of 0,1,2,...,n for each set of repeated records. Basically, I want to turn:
field_id | seq
----------+-----
      1 |   0
      2 |   0
      3 |   0
      3 |   0
      3 |   0
      4 |   0
      4 |   0
      5 |   0
      6 |   0
into:
field_id | seq
----------+-----
      1 |   0
      2 |   0
      3 |   0
      3 |   1
      3 |   2
      4 |   0
      4 |   1
      5 |   0
      6 |   0

What's the best way to that?

This is mildly tricky to do, and hard to maintain.

In most cases where people say they need this, they're actually perfectly happy with the seq value being enough to make the row unique, and ideally increasing in order of something such as insertion time ...

I know its academic now. But this is a great use case for the windowing functions being added to 8.4. In 8.4 it should be as easy as

SELECT field_id, RANK() OVER(PARTITION BY field_id) AS seq
FROM foo;


Artacus

--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux