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
--
  Richard Huxton
  Archonet Ltd

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to