2014-01-07 2 views
0

Я хочу, чтобы выполнить запрос, например:обновления устанавливается из внутреннего соединения запроса thowing ошибки

UPDATE I 
SET I.CAP_NAME = S.CAP_NAME 
FROM INSURED_FARMERS I 
INNER JOIN INDIAN_STATES_REGION S 
    ON UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME) 

но он выдает ошибку: Ошибка SQL команды ора-00933 SQL не правильно закончилась на линии: SET I.CAP_NAME = S.CAP_NAME

ответ

1

Я не думаю, что вы можете написать инструкцию UPDATE в Oracle, используя JOIN.

UPDATE INSURED_FARMERS I 
SET I.CAP_NAME = (SELECT S.CAP_NAME 
        FROM INDIAN_STATES_REGION S 
        WHERE UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME)) 
WHERE EXISTS (SELECT S.CAP_NAME 
       FROM INDIAN_STATES_REGION S 
       WHERE UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME)) 
+1

Sinc вы быстрее ... http: //sqlfiddle.com/#! 4/60d85/1 – Passerby

+0

Хорошо указал @Passerby, что есть два подхода к этому. то есть удаление «EXISTS» приведет к установке «NULL» для всех записей без совпадения. – Drumbeg

1

посмотреть здесь: stackoverflow

вы можете сделать оба пути:

  1. как есть ответ с существует
  2. используя встроенный вид, если ваши таблицы связаны по столбцам с уникальными индексы или первичные ключи (эти столбцы UPPER(I.STATE_NAME_FI) = UPPER(S.STATE_NAME))
Смежные вопросы