2015-04-28 3 views
0
UPDATE catalog_product_entity_text t1 SET value = (SELECT value FROM 
(SELECT value FROM catalog_product_entity_text t2 WHERE t2.value_id = 
(t1.value_id+2)) AS t3) 

Это то, что PhpMyAdmin говорит мне, когда я пытаюсь запустить этот запрос:Может кто-нибудь помочь мне отладить этот запрос MySQL?

#1054 - Unknown column 't1.value_id' in 'where clause' 

Вот что моя структура выглядит следующим образом:

Structure example

Я хочу, чтобы принести value линии столбцов 2 строит каждый, оставляя две последние строки пустыми, фиксируя ошибку импорта, вызвав размещение двух дополнительных строк в верхней части столбца.

+1

Вместо того, чтобы вложенные подвыборки подобны этому, рассмотрите возможность самостоятельного объединения. Для этого я убираю sqlfiddle. – mabi

ответ

2
UPDATE catalog_product_entity_text t1 
INNER JOIN catalog_product_entity_text t2 
ON t2.value_id = t1.value_id+2 
SET t1.value = t2.value 

Update 1 @mabi, если речь идет о OP # 1054 - Неизвестный столбец 't1.value_id' в 'где предложение'.

Эта ошибка относится к правилу - вы не можете вызвать родительскую таблицу внутри подзапроса. Это касается пространства имен внутри запроса. Так что если вы

select * 
from a 
join (
    select * 
    from b 
) as b1 

вы не можете использовать a когда (select from b) и, кстати, вы не можете получить доступ к b на a уровне вы можете использовать только b1.

+1

Секунды передо мной, нажав кнопку сообщения ;-) Вот сценарий: http://sqlfiddle.com/#!9/b343f/1 Теперь, если вы также можете добавить, почему 't1' не разрешается как псевдоним, который сделает его полным. – mabi

+0

Вы, ребята, потрясающие, спасибо. И я согласен с @mabi. –

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