Ошибка при использовании предложения WITH и ОБНОВЛЕНИИ в MySQL

#mysql #sql #database

Вопрос:

я попытался выполнить этот запрос:

 WITH updateables AS (
    SELECT id_product, quantity
    FROM products_order
    WHERE id_order = 1239 AND state = 10
)
UPDATE product
SET product.stock = updateables.quantity
WHERE product.id_product = updateables.id_product```

 

Но это троу:

 Error Code: 1054. Unknown column 'updateables.id_product' in 'where clause```
 

Ответ №1:

Определение CTE с помощью этого WITH предложения не означает неявного присоединения этого CTE к другим таблицам в вашем запросе.

Вам нужно будет использовать СОЕДИНЕНИЕ в своем запросе к CTE:

 WITH updateables AS (
    SELECT id_product, quantity
    FROM products_order
    WHERE id_order = 1239 AND state = 10
)
UPDATE product JOIN updateables ON product.id_product = updateables.id_product
SET product.stock = updateables.quantity;
 

Комментарии:

1. Большое спасибо!