SQL用于更新价格

时间:2013-09-15 07:31:40

标签: sql oracle

我正在做作业,但无法弄明白我需要做什么:

问题:

  • 提高PARTs的价格5%。
  • 显示当前数据加上新价格。
  • 排列输出,以便手头的数量下降。

SQL I USED:

UPDATE PART
  set PRICE=PRICE*1.05
ORDER BY ON_HAND DESC;

我得到什么回报:

ERROR at line 3: ORA-00933: SQL command not properly ended

4 个答案:

答案 0 :(得分:3)

UPDATE查询无法与ORDER BY一起使用。

UPDATE PART set PRICE=PRICE*1.05;  

UPDATE PART set PRICE=PRICE*1.05 WHERE some_condition;

答案 1 :(得分:3)

如果您只需要显示值,您可以执行以下操作:

select item,on_hand,price,(price * 1.05) as new_price
from part
order by on_hand desc;

SQLFiddle

但是如果您必须更新表中的新价格然后显示值,则必须编写两个查询,一个用于更新值,另一个用于显示值。

更新值:

UPDATE PART set PRICE=PRICE*1.05;

显示值:

select *
from part
order by on_hand desc;

SQLFiddle

答案 2 :(得分:1)

ORDER BY不是Oracle SQL中UPDATE查询中的有效子句(尽管MySQL确实支持它)。这就是你收到错误信息的原因。只需删除

条款

无论如何,很少会对UPDATE的执行顺序产生影响。

您的问题的其余部分将需要ORDER BY子句作为SELECT语句的一部分

答案 3 :(得分:1)

首先获取正确的值,并计算新值:

select PRICE, ON_HAND, PRICE * 1.05 as NEW_PRICE
from PART
order by ON_HAND DESC

然后进行实际更新

update PART
set PRICE = PRICE * 1.05