0

すでに 1 時間かけて、この作業を検索して取得しようとしました。mysqlが嫌いになり始めました。ここで何が間違っていますか?

UPDATE product_reward pr
  LEFT JOIN product p ON (pr.product_id = p.product_id)
  LEFT JOIN product_special ps ON (pr.product_id = ps.product_id)

SELECT CASE ps.price  
  WHEN NULL
    THEN SET pr.points = ROUND(p.price * 1);
  ELSE 
    SET pr.points = ROUND(ps.price * 1);
END;

normal を使用してみIF ELSEましたが、明らかにプロシージャ内でのみ機能します。特別価格が の場合のみ、通常価格に基づいてポイントを設定しようとしていNULLます。

4

1 に答える 1

2

これを試すか、ifステートメントでMysql Updateを調べてください

UPDATE product_reward pr
  LEFT JOIN product p ON (pr.product_id = p.product_id)
  LEFT JOIN product_special ps ON (pr.product_id = ps.product_id)

SET pr.points = ROUND(COALESCE(ps.price, p.price) * 1)
于 2013-01-20T00:17:44.357 に答える