Преобразование UPDATE с INNER JOIN из SQL для использования в MySQL

Я хотел бы преобразовать это для нас в MySQL:

UPDATE product SET price = 12.95 FROM product INNER JOIN product_to_category ON product.product_id = product_to_category.product_id INNER JOIN category ON product_to_category.category_id = category.category_id AND category.parent_id = 39 

MySQL не нравится часть FROM, и я не уверен, что INNER JOINs будут работать как написано.

 UPDATE product SET price = 12.95 WHERE product_id in (SELECT product_id FROM product_to_category INNER JOIN category ON product_to_category.category_id = category.category_id WHERE category.parent_id = 39) 

У меня нет вашей базы данных, поэтому я не могу протестировать, но, полагаю, вы могли бы использовать синтаксис нескольких таблиц для вашего оператора обновления:

 UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] 

Указание руководства:

Для синтаксиса с несколькими таблицами UPDATE обновляет строки в каждой таблице с именем table_references, которые удовлетворяют условиям.

В вашем случае что-то вроде этого может сделать трюк:

 UPDATE product, product_to_category, category SET product.price = 12.95 WHERE product.product_id = product_to_category.product_id AND product_to_category.category_id = category.category_id AND category.parent_id = 39 

Надеюсь это поможет !

Общий синтаксис для оператора UPDATE с несколькими таблицами

 UPDATE <table> (INNER|LEFT|RIGHT|...) JOIN <table2> ON <condition> SET <field>=<value> WHERE <condition> 

Поэтому ваше заявление должно работать, если вы перепишете его на

 UPDATE product INNER JOIN product_to_category ON product.product_id = product_to_category.product_id INNER JOIN category ON product_to_category.category_id = category.category_id AND category.parent_id = 39 SET price = 12.95 

(непроверенный, у меня нет экземпляра mysql)

 UPDATE product INNER JOIN product_to_category ON product.product_id = product_to_category.product_id INNER JOIN category ON product_to_category.category_id = category.category_id AND category.parent_id = 39 SET product.price = 12.95