Есть 2 таблицы, мне нужно увеличить значение price стобца s_variants на 10% где brand_id = 84 и price < 1000.
Пробывал сделать через JOIN он не работает, попробывал через подзапрос
UPDATE `s_variants`
SET `s_variants`.`price`= `s_variants`.`price` * 1.1
WHERE `s_variants`.`price` < 1000
AND `s_variants`.`product_id` =
(SELECT `s_products`.`id` FROM `s_products` WHERE `s_products`.`brand_id` = 84)
Но, получаю ошибку, что подзапрос возвращает несколько вариантов. Как правильно составить запрос, что бы выполнить задачу?
таблица s_products
| id | brand_id |
-------------------
| 1 | 21 |
| 5 | 84 |
| 235 | 84 |
таблица s_variants
| id | product_id | price |
----------------------------
| 38 | 1 | 545 |
| 25 | 5 | 158 |
| 35 | 235 | 999 |
Абсолютно правильная ошибка, результат выполнения подзапроса - множество, значит знак равенства не подойдет. Вам нужно использовать in
UPDATE `s_variants`
SET `s_variants`.`price`= `s_variants`.`price` * 1.1
WHERE `s_variants`.`price` < 1000
AND `s_variants`.`product_id` IN
(SELECT `s_products`.`id` FROM `s_products` WHERE `s_products`.`brand_id` = 84)
пример на sqlfiddle
Сборка персонального компьютера от Artline: умный выбор для современных пользователей