2013-06-17 2 views
0

Я получаю ошибку, что подзапрос возвращает более одной строки. Как решить эту проблему:обновление MYSQL записей на котором состояние в зависимости от подзапроса

UPDATE sales 
    SET newsletter='0' 
    WHERE (user_id='33' AND product_id=(SELECT product_id FROM phplist_list WHERE id = (SELECT listid FROM phplist_listmessage WHERE messageid='20'))) 
+0

Почему все подзапросы? Почему не UPDATE через соединение? –

+0

IS это возможно для Вас, чтобы помочь мне, написав пример выше с использованием JOIN? Спасибо, потому что я не являюсь экспертом в SQL, я потерял упражнение довольно несколько лет назад об этом – user1238784

ответ

2

Вы можете решить эту проблему с помощью in вместо =:

UPDATE sales 
    SET newsletter='0' 
    WHERE user_id = '33' AND 
      product_id in (SELECT product_id 
         FROM phplist_list 
         WHERE id in (SELECT listid 
             FROM phplist_listmessage 
             WHERE messageid = '20' 
            ) 
         ) 
+0

Большое спасибо ... Я использую MySQL кодирования довольно редко, и теперь я уже забыл разницу между использованием «в» и с помощью " = "в условии запроса – user1238784

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