From: Emi Lu <emilu@encs.concordia.ca>
To: Scott Marlowe <scott.marlowe@gmail.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: case when... end in update clause?
Date: Wed, 12 Mar 2008 12:25:04 -0400
Message-ID: <47D803E0.5050207@encs.concordia.ca> (raw)
In-Reply-To: <dcc563d10803120919w5d26ff5amb7c0cf10cfcb99df@mail.gmail.com>
References: <47D7FB06.10707@encs.concordia.ca>
<dcc563d10803120901j5f6bd4as8eae1320318b7060@mail.gmail.com>
<47D8009D.6000703@encs.concordia.ca>
<dcc563d10803120919w5d26ff5amb7c0cf10cfcb99df@mail.gmail.com>
Hi Scott ,
>> No. I provide one small fake example.
>>
>>
>> I want to know how to use case when in update/set clause as the following:
>>
>> update test
>> set id = case when id = 5 then 6 else id end;
>
> Well, I think my point stands, that this stuff really belongs in a
> where clause. The way you're doing it it updates ALL the rows whether
> it needs to or not, my way only updates the rows that need it. How
> about a REAL example of what you're trying to do. There may well be a
> more efficient way of doing this than using a case statement. Or
> not...
Ok.
The situation would like this, in one query:
UPDATE tableName
SET
col1 = val1 when col1 satisfy condition1
col1 = val2 when col1 satisfy condition2
... ...
col1 = valN when col1 satisfy conditionN
... ...
WHERE
col3 satisfy conditionX;
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: emilu@encs.concordia.ca, scott.marlowe@gmail.com
Subject: Re: case when... end in update clause?
In-Reply-To: <47D803E0.5050207@encs.concordia.ca>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox