2017-04-07 18 views
0

私は選択ステートメントから最後の値を更新に入力しようとしています。私は以下のクエリを試しましたが、エラーが発生しました。これは私にエラーを与えます:右括弧がありません。更新する値を選択してください

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 byより前です。 order 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

関連する問題