简体   繁体   中英

MySQL UPDATE with LEFT JOINS

This is my query:

UPDATE 
    `product_pricing` 

SET `formula_id`= '2'

WHERE 1

SELECT

product_pricing.id,
product_pricing.formula_id,
product_pricing.vat_calculated,

products_ids.id,
products_ids.link_id,

product_attributes.fty_id,
product_attributes.size_id,

product_sizes.size_id,
product_sizes.wheel

FROM product_pricing 

LEFT JOIN products_ids ON product_pricing.id = products_ids.id
LEFT JOIN product_attributes ON products_ids.link_id = product_attributes.fty_id
LEFT JOIN product_sizes ON product_attributes.size_id = product_sizes.size_id

WHERE

product_sizes.wheel = '13'

How would I incorporate the SELECT query with the update query?

I need to only update products that have product_sizes.wheel = '13' but to get this information, I need a few left joins.

You can use this update with LEFT JOIN and Where

update product_pricing 
LEFT JOIN products_ids ON product_pricing.id = products_ids.id
LEFT JOIN product_attributes ON products_ids.link_id = product_attributes.fty_id
LEFT JOIN product_sizes ON product_attributes.size_id = product_sizes.size_id
SET product_pricing.formula_id= '2'
WHERE

product_sizes.wheel = '13'

I think an INNER JOIN is needed here:

update product_pricing 
INNER JOIN products_ids ON product_pricing.id = products_ids.id
INNER JOIN product_attributes ON products_ids.link_id = product_attributes.fty_id
INNER JOIN product_sizes ON product_attributes.size_id = product_sizes.size_id
SET product_pricing.formula_id= '2'
WHERE product_sizes.wheel = '13'

try this

update product_pricing p
LEFT JOIN products_ids pi ON p.id = pi.id
LEFT JOIN product_attributes pa ON pi.link_id = pa.fty_id
LEFT JOIN product_sizes ps ON pa.size_id = ps.size_id
SET p.formula_id= '2'
WHERE
ps.wheel = '13'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM