Intereting Posts
Как подключиться к третьей таблице в моей инструкции SQL, которая возвращает COUNT, не теряя 0 счетчиков? Как обновить одну таблицу данными из другой таблицы в отдельной базе данных? Существуют ли причины для того, чтобы не сохранять логические значения в SQL в виде битовых типов данных? Как разделить строку, разделенную запятыми, внутри хранимой процедуры? Функция для недели месяца в mysql Ошибка получения индексного номера в базе данных с помощью C #, показывающая -1 Предварительные требования к составному курсу (один или несколько из a, b, c и x или y, а также z-стиль) Функция ORDER BY, не работающая в Oracle Запрос SQL DISTINCT в нескольких столбцах Есть ли встроенная в MySQL операция «появляется во всех» (с делением?)? Spark: Группа RDD Sql Query R В SQL Server 2016 SQL Identity (autonumber) добавляется даже с откатом транзакции Azure, архитектура веб-приложений MVC – как разделить данные между SQL Azure и хранилищем таблиц Azure? Как рассчитать экспоненциальную скользящую среднюю по postgres?

Преобразование 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