Postgres - 删除连接,使用给出错误
Posted
技术标签:
【中文标题】Postgres - 删除连接,使用给出错误【英文标题】:Postgres - DELETE JOIN, USING giving error 【发布时间】:2019-02-13 15:10:49 【问题描述】:所以 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
【问题讨论】:
using
关键字只能使用一次,就像 e.g. where
关键字。
PostgreSQL delete with inner join的可能重复
@Jens 所以我的查询中有两个USING
s,这是否意味着我只需要在WHERE
部分使用更多SELECT
?
【参考方案1】:
您实际上可以在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;
【讨论】:
对于我得到的那个查询:HINT: There is an entry for table "li", but it cannot be referenced from this part of the query.
需要切换 ii
和 li
以消除错误。
等一下,我搞砸了,那只会从item_instances
中删除,所以问题仍然存在
@a_horse_with_no_name 我之前做了一个编辑,我指的是不正确的,你可以查看编辑历史。【参考方案2】:
我的正常查询:
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
【讨论】:
以上是关于Postgres - 删除连接,使用给出错误的主要内容,如果未能解决你的问题,请参考以下文章
如何将strapi、graphql和postgres连接在一起?
从 postgres 表中提取 json 数组给出错误:无法从标量中提取元素