2015-07-08 3 views
0

Сегодня на работе я использовал запрос, ressembled, что один:Вложенный SQL запросов

Update myTable mt_1 Set (VALUE_1, VALUE_2) = 
(
    Select val_1 as VALUE_1, val_2 as VALUE_2 
    From myTable mt_2 
    Where mt_2.ID = mt_1.ID 
) 

Он работал отлично, но потом, мне нужно гнездовой мой вопрос так:

Update myTable mt_1 Set (VALUE_1, VALUE_2) = 
(
    Select * From (
     Select val_1 as VALUE_1, val_2 as VALUE_2 
     From myTable mt_2 
     Where mt_2.ID = mt_1.ID 
    ) 
) 

И там, Oracle закричал на меня, сказав, что поле «mt_1». «ID» каким-то образом было неизвестно.

Это обычное поведение, связанное с вложением запроса, таблицы, определенные снаружи, но не переопределяющие нигде больше, теряют свою область действия (mt_1 здесь)? Как обойти эту проблему?

ответ

0

Вы пропустили псевдоним mt_1 в отличие от первого запроса. См. 1-я строка ниже.

Update myTable mt_1 Set (VALUE_1, VALUE_2) = 
(
    Select * From (
     Select val_1 as VALUE_1, val_2 as VALUE_2 
     From myTable mt_2 
     Where mt_2.ID = mt_1.ID 
    ) 
) 
+0

Благодарим за сообщение, опечатку здесь: P Я не пропустил его с оригинальным запросом – kaligne

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