我有这个无效的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连接列?我需要连接为ON o.supplier_code = r.supplier_option_code
或ON o.supplier_barcode = r.supplier_option_code
,这取决于third_party_raw_stock_price.third_party_raw_stock_price
列所调用的。
JOIN
语句基本上只是一个布尔测试-如果测试的结果(无论简单或复杂)计算为true
,则记录被连接。如果为false,则没有join。
这意味着您的连接条件可以任意复杂,只要它最终归结为一个真/假值:
SELECT ...
FROM bar
JOIN foo ON (foo.feed = 'barcode' AND foo.supplier = bar.supplier)
OR
(foo.feed = 'code' AND foo.code = bar.code)