2016-08-24 19 views
0

私はこの無効なMySQLの文を持っているに参加する変更:は条件付きで列

UPDATE third_party_raw_stock_price AS r 
      IF feed_link_column = 'supplier_barcode' 
        JOIN options_new AS o 
         ON o.supplier_barcode = r.supplier_option_code 
      END IF 
      IF feed_link_column = 'supplier_code' 
        JOIN options_new AS o 
         ON o.supplier_code = r.supplier_option_code 
       END IF 
      JOIN third_party_config AS c 
       ON SUBSTRING(o.options_id, 3, 2) = c.code 
      SET o.price = 9.99, o.cost_price_variation = 3.33, o.stock = 7 
      LIMIT 2000 

は、どのように私はこれが動的に参加options_new列を定義するために書き直していますか?私はthird_party_raw_stock_price.third_party_raw_stock_priceの列によって呼び出されることに応じて、結合がON o.supplier_code = r.supplier_option_codeまたはON o.supplier_barcode = r.supplier_option_codeのいずれかになるようにする必要があります。

答えて

1

JOINステートメントは基本的に単なるブール値テストです。テストの結果(単純か複雑か)がtrueになると、レコードが結合されます。それが偽であれば、結合はありません。

SELECT ... 
FROM bar 
JOIN foo ON (foo.feed = 'barcode' AND foo.supplier = bar.supplier) 
      OR 
      (foo.feed = 'code' AND foo.code = bar.code) 
:あなたの参加条件は、あなたがそれが最後に真/偽の値に帰着限り、それがために必要な限りarbitarily複雑になることを意味し