Oracle обновить оператор с внутренним объединением с заданным значением - PullRequest
1 голос
/ 20 марта 2020

Я новичок в oracle базе данных. Я пытаюсь выполнить запрос на обновление, но он возвращает ошибку:

Error at Command Line : 3 Column : 1
Error report -
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"

Вот мой запрос:

UPDATE GTP_CUSTOMER_REFERENCE
SET GCR.REFERENCE='0000001'
FROM GTP_CUSTOMER_REFERENCE GCR
join gtp_company gc on gc.abbv_name = gcr.customer_abbv_name
WHERE gc.name in ('AAA', 'BBB')

Оцените каждую помощь. Спасибо

1 Ответ

1 голос
/ 20 марта 2020

Это неправильный синтаксис в oracle. Вы можете использовать exists следующим образом:

UPDATE GTP_CUSTOMER_REFERENCE GCR
SET GCR.REFERENCE='0000001'
WHERE EXISTS (SELECT 1 FROM gtp_company gc WHERE gc.abbv_name = gcr.customer_abbv_name
AND gc.name in ('AAA', 'BBB'))

Или можете использовать оператор merge следующим образом:

MERGE INTO GTP_CUSTOMER_REFERENCE GCR
USING (SELECT DISTINCT gc.abbv_name AS abbv_name
         FROM gtp_company gc 
        WHERE gc.name in ('AAA', 'BBB')) GC
ON (gc.abbv_name = gcr.customer_abbv_name)
    WHEN MATCHED THEN UPDATE SET GCR.REFERENCE='0000001'

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...