2

関数を使用しようとしている sqlfiddle リンクを次に示し ます。クエリのみで動作していますが、クエリのサブクエリでこれを試すと間違った値が返されます.Here my query
sum()SELECTUPDATESELECT

SELECT 
  sum(i.pr_pur_cost_price*i.quantity) AS net_amount
FROM 
  product_purchases AS p
LEFT JOIN 
  product_purchase_item AS i
ON 
  p.product_purchase_item_id=i.product_purchase_item_id
WHERE 
  p.insert_operation=48
GROUP BY 
  p.insert_operation

ここで私の更新クエリ

UPDATE 
  shop_balance AS s 
SET 
   s.shop_balance=(s.shop_balance-(
      SELECT 
         sum(i.pr_pur_cost_price*i.quantity) as net_amount 
      FROM 
         product_purchases AS p
      LEFT JOIN 
         product_purchase_item AS i
      ON
         p.product_purchase_item_id=i.product_purchase_item_id
      WHERE 
         p.insert_operation=48
      GROUP BY 
         p.insert_operation
     )
   )
where s.shop_balance_id=n;    

なぜUPDATEクエリでこの間違った値。sum() 関数の 2 つの列の問題ですか? または最善の解決策はありますか?

4

1 に答える 1

1

これは同じ問題ですか?

複数のテーブルで sum() の結果を使用した MYSQL の更新

update ステートメントは group by を許可していません。それを削除しただけでは問題になります。

あなたのシナリオで問題になるかどうかを確認できず申し訳ありませんが、更新ステートメントのコンテキストでその必要性を理解することはできません.

それらを削除するか、実際の更新ステートメント自体の一部を形成しない方法で追加してみてください。

于 2013-08-06T18:12:41.950 に答える