update from join

From: Gary Stainburn <gary(dot)stainburn(at)ringways(dot)co(dot)uk>
To: pgsql-sql(at)postgresql(dot)org
Subject: update from join
Date: 2009-05-14 13:27:14
Message-ID: 200905141427.15022.gary.stainburn@ringways.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I know I should be able to do this but my brain's mashed today

I have a stock table with

s_stock_no varchar primary key
s_vin varchar
s_updated timestamp
s_superceded boolean

It is possible for the same vin to exist on stock if we have sold and then
bought back a vehicle, e.g. as a part exchange.

Every time a vehicle is inserted/updated the s_updated field is update.

How can I update the table so that for each s_vin, if a record does not have
the most recent s_updated value, s_superceded is set to true?

I can get the most recent value by running:

select * from (select s_vin,
count(s_updated) as numb,
max(s_updated)::timestamp as latest
from stock
group by s_vin) foo
where numb > 1;

but I can't seem to get how I can convert this to an update statement. The num
> 1 simply removed all vehicles with only one record.

I seem to think I need an update..... from..... statement

--
Gary Stainburn

This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Emi Lu 2009-05-14 14:37:41 How to dump views definition in one schema?
Previous Message Tom Lane 2009-05-13 19:03:33 Re: Distinct oddity