2017-04-07 64 views
0

我试图从select语句输入更新中的最后一个值。我试过下面的查询,但得到了错误:这给了我错误:缺少右括号。选择要更新的值

update dt2112b2.postgraduate_order set order_total = 
(select item_cost * order_quantity 
FROM dt2112b2.order_stock, dt2112b2.postgraduate_order 
WHERE dt2112b2.order_stock.menu_item = 
dt2112b2.postgraduate_order.menu_item and ROWNUM <=1 
ORDER BY postgraduate_order.order_id desc); 

回答

1

我想你想要一个相关的子查询。您也有rownum的问题 - 您在之前选择任意行order byorder by什么都不做。也许你真的想要的总和:

update dt2112b2.postgraduate_order po 
    set order_total = (select sum(item_cost * order_quantity) 
         from dt2112b2.order_stock os 
         where os.menu_item = po.menu_item 
        ); 

或者如果你想拥有最大订单ID匹配顺序:

update dt2112b2.postgraduate_order po 
    set order_total = (select max(item_cost * order_quantity) keep (dense_rank first order by order_id desc) 
         from dt2112b2.order_stock os 
         where os.menu_item = po.menu_item 
        ); 
+0

它的工作原理。感谢磨坊! :) – Michael