Postgres - УДАЛИТЬ СОЕДИНЕНИЕ, ИСПОЛЬЗУЯ ошибку - PullRequest
0 голосов
/ 13 февраля 2019

Так что не похоже, что в Postgres есть DELETE JOIN s, поэтому я попытался использовать USING:

DELETE FROM
    creator.list_items li
USING
    creator.lists l
USING
    item_instances ii
WHERE
    li.list_id = l._id
    AND
    li.item_instance_id = ii._id
    AND
    ii.item_id IN ($1:list)
    AND
    l._id = $2
    AND
    l.account_id = $3

, но просто выдает ошибку:

ERROR:  syntax error at or near "USING"
LINE 5:                 USING

мой оригинальный запрос:

DELETE 
    li
FROM
    creator.list_items li
JOIN
    creator.lists l
    ON
        li.list_id = l._id
JOIN
    item_instances ii
    ON
        li.item_instance_id = ii._id
WHERE
    ii.item_id IN ($1:list)
    AND
    l._id = $2
    AND
    l.account_id = $3

Ответы [ 2 ]

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

Мой действующий запрос:

DELETE FROM
    creator.list_items li
USING 
    creator.lists l 
WHERE 
    li.item_instance_id 
        IN 
        (
            SELECT
                _id
            FROM
                creator.item_instances
            WHERE
                item_id IN ($1:list) 
        )
    AND
    li.list_id = $2 
    AND
    li.list_id = l._id
    AND
    l.account_id = $3
0 голосов
/ 13 февраля 2019

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

DELETE FROM
    creator.list_items li
USING creator.lists l JOIN
      item_instances ii
      ON li.list_id = l._id
WHERE li.item_instance_id = ii._id AND
      ii.item_id IN ($1:list) AND
      l._id = $2 AND
      l.account_id = $3;
...