-1

对于容量超过 200 件的每件商品,我必须使用两个 ID 必须相同且我无法传递此错误的表将价格降低 2%:ORA-00933:SQL 命令未正确结束

“目录”是一个表,“订单”是第二个表

update Catalog
set price = (price - price*0.02) from Catalog inner join Order on 
(Catalog.idf = Order.idf and Catalog.idp = Order.idp)
where quantity > 200;

这里可能是什么错误?谢谢!

4

2 回答 2

0

FROMOracle不支持UPDATE.

嗯。如果我推测quantity在 中order,那么您可以使用:

update Catalog
    set price = 0.98 * price
    where (select o.quantity
           from Orders o 
           where Catalog.idf = Order.idf and Catalog.idp = Order.idp
          ) > 200;

我对此有点谨慎。orders这意味着和之间存在 1-1 的关系catalogorder如果一个目录条目可以有多个,那么您可能需要聚合。但是,这是您似乎试图在问题中实现的逻辑。

于 2020-12-04T12:40:15.247 回答
0

您还可以使用merge如下语句:

Merge into Catalog c
Using (select * from orders) O
On (c.idf = O.idf and C.idp = O.idp
    And o.quantity > 200)
When matched then
Update set c.price = 0.98 * price;
于 2020-12-04T12:50:11.733 回答