我有这个无效的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
列要求的加入。
答案 0 :(得分: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)