ORACLE SQL - обновление для максимального технического ключа на ID - PullRequest
1 голос
/ 24 октября 2019

Мне нужно написать заявление об обновлении для моей таблицы. Таблица содержит технический ключ и идентификатор клиента.

Мне нужно обновить поле в этой таблице, подняв поле на +1, но только для полей, где технический ключ имеет максимальное значение для этогоконкретный идентификатор клиента.

Сначала я попытался написать это так, как я обычно это делаю на MSSQL:

UPDATE a
SET a.VERSION_CHECK = (a.VERSION + 1)
FROM customers a
WHERE a.technical_key = (SELECT MAX(b.technical_key)
                         FROM customers b 
                         WHERE a.customer_id = b.customer_id 
                         )

С тех пор я пытался работать с предложением WHERE EXISTS всинтаксис SQL, используемого в Oracle, но я не могу понять, как правильно работать с техническим ключом MAX, чтобы в таблице обновлялись только эти строки. Кто-нибудь получил какой-либо вклад, пожалуйста?

1 Ответ

1 голос
/ 24 октября 2019

Вы можете использовать коррелированный подзапрос:

UPDATE customer c
SET VERSION_CHECK = VERSION + 1
WHERE c.technical_key = (SELECT MAX(c2.technical_key)
                         FROM customers c2
                         WHERE c2.customer_id = c.customer_id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...