обновлять только если строка существует (ЕСЛИ ТО) - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу выполнить следующий запрос:

UPDATE
    creator.contacts
SET
    status = 'accepted'
WHERE
    (
        account_id = $1
        AND
        contact_id = $2
    )
    OR
    (
        account_id = $2
        AND
        contact_id = $1
    )

Но только при определенном условии, которое я запрашиваю, используя следующее:

SELECT
    COUNT(*)
FROM
    creator.contacts
WHERE
    account_id = $1
    AND
    status = 'pending'

Возможно ли объединитьэто в один запрос?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете добавить это условие в ваше предложение WHERE как EXISTS тест.Обратите внимание, что вам нужно добавить () вокруг существующего предложения WHERE, чтобы обеспечить правильный порядок вычисления логических операторов:

UPDATE
    creator.contacts
SET
    status = 'accepted'
WHERE
    ((
        account_id = $1
        AND
        contact_id = $2
    )
    OR
    (
        account_id = $2
        AND
        contact_id = $1
    ))
    AND
        EXISTS (SELECT * 
                FROM  creator.contacts
                WHERE
                   account_id = $1
                AND
                   status = 'pending')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...