Re: case when... end in update clause?

From: Emi Lu <emilu(at)encs(dot)concordia(dot)ca>
To: Scott Marlowe <scott(dot)marlowe(at)gmail(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: case when... end in update clause?
Date: 2008-03-12 16:25:04
Message-ID: 47D803E0.5050207@encs.concordia.ca
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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;

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Valter Douglas Lisbôa Jr. 2008-03-12 22:36:13 Timestamp, epoch and a bit confusion
Previous Message Scott Marlowe 2008-03-12 16:19:15 Re: case when... end in update clause?