更新列并引入条件

时间:2012-03-13 04:05:58

标签: oracle10g

基本问题,开始用户。

我在表(房间)中有一个列(价格)。列(价格)的约束必须在20到100之间。

我需要更新列(价格)以反映价格上涨5%。但是,此列中的某些字段在更新后的价格将> 100,从而导致其下降 在约束之外。要解决这个问题,那些超过100的价格需要设置为100。这就是我所拥有的:

UPDATE ROOM
SET PRICE=
CASE 
   WHEN PRICE*1.05<100 
   THEN PRICE*1.05
   ELSE PRICE=100
END CASE
WHERE HOTELNO='1004' OR
      HOTELNO='1001' OR
      HOTELNO='1002'
;

我在搜索中可以提出最佳效果。我收到以下错误:

ORA-00905:缺少关键字

这是使用Oracle 10g。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试以下

update room
set price=price*1.05
where hotelno in ('1004','1001')
and (price*1.05)<100