Re: UPDATE problem

From: Vince <vopipari_at_ehealthcontracts.com>
Date: 12 Nov 2001 08:19:37 -0800
Message-ID: <8d71f979.0111120819.3980f886_at_posting.google.com>


I have found success in rewriting like the following:

UPDATE tab1 a
SET a.attrib_dest =

    ( SELECT b.attrib_source

        FROM  tab2 b
        WHERE a.key  = b.key
     )

WHERE EXISTS
    (SELECT NULL
     FROM   tab2 c
     WHERE  c.attrib_source IS NOT NULL
     AND    c.key = a.key

    )
;

Ralf-Henning Glomb <glomb_at_ralf-henning-glomb.de> wrote in message news:<3BEAF791.8F2AD4B6_at_ralf-henning-glomb.de>...
> Hi,
>
> i'm looking for a hint, how to write a update-statement for the
> following problem.
>
> I have table A filled with data.
> Now i want to update one attrbute (attrib_dest). The source is
> attrib_source from another table (tab2). The association between the two
> tables is tab1.key and tab2.key (both primary keys).
>
> The problem is, that i only want to update the rows on tab1 where the
> corresponding value of the source table is not NULL.
>
> So, teh following statement works, but it is much too slow.
>
> UPDATE tab1 a
> SET a.attrib_dest =
> ( SELECT b.attrib_source
> FROM tab2 b
> WHERE a.key = b.key
> )
> WHERE tab1.key IN
> ( SELECT c.key
> FROM tab1 c, tab2 d
> WHERE c.key = d.key
> AND d.attrib_source IS NOT NULL
> )
> ;
>
>
> It would be great if you could give me a hint how to write this
> statement in a better way.
>
> Thank you very much
>
> Ralf-Henning
Received on Mon Nov 12 2001 - 17:19:37 CET

Original text of this message