From: | Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com> |
---|---|
To: | Josh Berkus <josh(at)agliodbs(dot)com> |
Cc: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: UPDATE Query problem |
Date: | 2002-01-18 01:20:59 |
Message-ID: | 20020117171611.H57470-100000@megazone23.bigpanda.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-sql |
On Thu, 17 Jan 2002, Josh Berkus wrote:
> Folks,
>
> I have a database that contains a chronological journal of activity. For
> various reasons, this journal contains both complete and incomplete records,
> and while all records are timestamped, the primary key is not strictly ordered
> by timestamp.
>
> What I want to do is update each incomplete record with the contents of the
> last previous complete record. As a simple-minded test case:
>
> CREATE TABLE history AS (
> history_id SERIAL PRIMARY KEY,
> period_date TIMESTAMP,
> fieldA VARCHAR(30),
> fieldB INT4 );
>
> CREATE VIEW complete_history_records AS
> SELECT history.*
> FROM history WHERE fieldA IS NOT NULL
> and fieldB IS NOT NULL
>
> UPDATE history SET fieldA = chr.fieldA
> fieldB = chr.fieldB
> FROM (SELECT complete_history_records.*
> WHERE ??? ) chr
> WHERE (history.fieldA IS NULL or
> history.fieldB IS NULL);
>
> The problem is that I cannot figure out a subselect that will allow me to
> select the last complete history record prior to the one being updated. It
> seems like I need to reference a field in the main query in the subselect,
> which can't be done.
>
> To further hamper things, for portability reasons, I can use neither SELECT
> DISTINCT ON nor custom functions.
Isn't update...from already an extension?
In any case, is performance really important? I think something like:
update history set fieldA=chr.fieldA, fieldB=chr.fieldB from
complete_history_records chr where (history.fieldA is null or
history.fieldB is null) and chr.period_date=(select max(period_date)
from complete_history_records where period_date<history.period_date);
might work if really slow.
From | Date | Subject | |
---|---|---|---|
Next Message | Hiroshi Inoue | 2002-01-18 01:55:44 | Re: tuptoaster.c must *not* use SnapshotAny |
Previous Message | Tom Lane | 2002-01-18 01:20:00 | Re: UPDATE Query problem |
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Berkus | 2002-01-18 03:59:27 | Re: UPDATE Query problem |
Previous Message | Tom Lane | 2002-01-18 01:20:00 | Re: UPDATE Query problem |