Sql Postgres-使用给定错误删除联接
因此,Postgres中似乎没有Sql Postgres-使用给定错误删除联接,sql,postgresql,join,sql-delete,Sql,Postgresql,Join,Sql Delete,因此,Postgres中似乎没有DELETE JOINs,因此我尝试使用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
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
实际上,您可以在
USING
子句中使用JOIN
:
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;
我的功能查询:
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
using
关键字只能使用一次,就像where
关键字一样。可能重复@Jens,所以我在查询中有两个using
关键字,这是否意味着我只需要在where
部分使用更多选择?对于该查询,我得到:提示:有一个表“li”的条目,但是它不能从查询的这一部分引用。
需要切换ii
和li
以消除错误。等等,我搞砸了,这只会从item\u实例中删除,所以问题仍然存在stands@a_horse_with_no_name我之前做过一次编辑,但不正确,我指的是,您可以检查编辑历史记录。