Richard Huxton wrote:
> george young wrote:
>
>> Well, I don't have any need for it to correlate with the age of the
>> tuple. My use of step.ctid<s.ctid was not to get the earliest or
>> latest row, but just to *choose* one. Perhaps there's some other
>> query that would modify only one of each pair of equal-keyed rows?
>
>
> How do you know there is only 1 duplicate?
>
> Anyway, if (x,y) are the same but (z) is not then you can compare
> against max(z) or min(z). Something like:
>
> SELECT t1.x AS update_me_x, t1.y AS update_me_y, t1.z AS update_me_z
> FROM
> test_tbl AS t1,
> (
> SELECT x,y,max(z) AS max_z
> FROM test_tbl
> GROUP BY x,y
> ) AS t2
> WHERE
> t1.x = t2.x AND t1.y = t2.y AND t1.z = t2.max_z
Oh, of course the easiest way to do it is to add an additional column of
type SERIAL to your temp-table. That way you have your rows nicely
numbered as you import them.
-- Richard Huxton Archonet Ltd