0

我正在做作业,但无法确切地弄清楚我需要做什么:

问题:

  • 将 PART 的价格提高 5%。
  • 显示当前数据加上新价格。
  • 安排输出,使手头的数量下降。

我使用的 SQL:

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

我得到的回报:

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

4 回答 4

3

UPDATE查询不能与ORDER BY.

UPDATE PART set PRICE=PRICE*1.05;  

或者

UPDATE PART set PRICE=PRICE*1.05 WHERE some_condition;
于 2013-09-15T07:36:58.780 回答
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

于 2013-09-15T07:39:56.843 回答
1

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

无论如何,执行 UPDATE 的顺序很少会有所不同。

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

于 2013-09-15T07:40:50.347 回答
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
于 2013-09-15T07:45:03.743 回答