2015-11-25 2 views
0

Я знаю, что есть ответы на этот вопрос, но я не могу понять, поскольку их код вопроса не совпадает с моим. У меня есть код здесь:mysql Код ошибки: 1093. Вы не можете указать целевую таблицу 'S' для обновления в разделе FROM.

UPDATE S 
SET city=(SELECT city FROM S WHERE s_name='Adams') 
WHERE s_name='Smith'; 

Я попытался изменить код в соответствии с ответами от другого вопроса:

UPDATE S 
SET city=(SELECT city FROM (SELECT* FROM S) AS temta WHERE s_name='Adams') 
WHERE s_name='Smith'; 

Даже если запрос успешен, но я получаю нулевое значение, значение не обновляется как я и предполагал.

+0

заблаговременно – June

ответ

0

у вас судимо так:

UPDATE S 
SET city=(SELECT city FROM (SELECT * FROM S WHERE s_name='Adams') AS temta) 
WHERE s_name='Smith'; 

ИЛИ

UPDATE S 
SET city=(SELECT c FROM (SELECT city as c FROM S WHERE s_name='Adams') AS temta) 
WHERE s_name='Smith'; 

ПРИМЕЧАНИЕ: Вы уверены, что подзапрос результат только один ряд?

+0

Я попробовал ваш, и я все еще получаю нулевое значение. Кажется, что mysql находит точное место для замены значения, но каждый раз, когда оно заменяется нулевым, а не значением adams – June

+0

@June, что вы получаете от 'SELECT c FROM (SELECT city as c FROM S WHERE s_name = 'Adams ') AS temta' – genespos

+0

Я получаю «Афины», что верно. Но команда «set city =» не может читать Афины. Я попробовал UPDATE S SET city = (SELECT c FROM (SELECT city as c FROM S WHERE s_name = 'Adams') AS temta) WHERE s_name = 'Smith', но я все равно получаю null – June

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

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