2014-01-23 2 views
1

мое заявление обновление, которое я был уверен, что будет работать, это:Почему моя инструкция по обновлению MySQL включает 2 таблицы?

UPDATE products SET manufacturers_id = 37 where products_id = 
(select products_id from  products_to_categories where categories_id = 35); 

но в PHPMyAdmin, ошибка я получаю это:

#1242 - Subquery returns more than 1 row 

, но я хочу больше, чем 1 строка обновляется , Я пытался обновить 100 или более в одном заявлении. как это можно переписать, чтобы он работал? Нужно ли мне использовать соединение?

+1

H вы пытались изменить 'products_id =' на 'products_id in'? – Dan

ответ

3

Вы должны использовать IN вместо =

UPDATE 
    products 
SET 
    manufacturers_id = 37 
WHERE 
    products_id IN (SELECT products_id 
        FROM products_to_categories 
        WHERE categories_id = 35); 

или вы могли бы использовать JOIN

UPDATE 
    products INNER JOIN products_to_categories 
    ON products.product_d = products_to_categories.products_id 
SET 
    products.manufacturers_id = 37 
WHERE 
    products_to_categories.categories_id = 35 
2

попробовать это

UPDATE products SET manufacturers_id = 37 where products_id in 
(select products_id from  products_to_categories where categories_id = 35); 

изменение = в IN

Смежные вопросы