2013-08-04 5 views
-1

Этот запрос не работает на MySQL с версией 5.1, но в последней версии MySQL (5.5) он работает.Обновление запроса Выберите, не работает?

Update furni T1 Set T1.user_id = (SELECT T2.user_id FROM furni_items T2 where T2.item_id = T1.id) ; 

Как заставить запрос работать с MySQL 5.1?

+1

Какая ошибка? –

+0

'0 rows affected' – user1538524

+0

Вы уверены, что ваш подзапрос возвращает результат, отличный от того, что уже находится в поле 'user_id'? – siride

ответ

1

Предполагается, что подзапрос может возвращать несколько строк. Вы можете исправить это с помощью limit, чтобы получить только 1:

Update furni T1 
    Set T1.user_id = (SELECT T2.user_id FROM furni_items T2 where T2.item_id = T1.id limit 1) 
+0

не работает – user1538524

+0

@ user1538524 Вы говорите: «Это не работает». Но в чем же проблема? Сообщение об ошибке? Он не обновляет строку по вашему желанию? Чтобы получить более точные ответы, может быть, вы должны отредактировать свой вопрос, чтобы объяснить *, что * запрос * должен * делать и * как * он терпит неудачу? –

+0

этот запрос не работает '0 rows affected' – user1538524

0

использование присоединиться

Update furni T1 
    INNER JOIN furni_items T2 
    ON T2.item_id = T1.id 
    Set T1.user_id = T2.user_id ; 
+0

не работает – user1538524

0

Я думаю, некоторые SQL работают по-разному на коррелированных обновлений. Попробуйте это без синтаксиса соединения, но вместо этого с помощью предложения where.

Update furni t1, furni_items t2 
    Set t1.user_id = t2.user_id 
    Where t1.id = t2.item_id 
+0

# 1054 - Неизвестный столбец 't1.user_id' в 'списке полей' – user1538524

+0

@ user1538524, единственное, что я могу придумать, это чувствительный к регистру T1 vs t1 ... Я отвечал от iPad. Что касается остальной части запроса, имена столбцов были такими же, как имена столбцов, которые у вас были в исходном запросе. – DRapp

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