gpt4 book ai didi

mysql - "You can' t 在 FROM 子句中指定目标表 't1' 进行更新。如何删除行?

转载 作者:行者123 更新时间:2023-11-29 19:45:32 25 4
gpt4 key购买 nike

 delete t1 from pg_acymailing_listsub t1
join pg_acymailing_subscriber tt on t1.subid = tt.subid
join pg_users t2 on tt.userid = t2.id
where NOW() > t2.registerDate + interval 90 day and t1.listid=7 and (
exists (
SELECT * FROM pg_acymailing_listsub WHERE pg_acymailing_listsub.listid=1 AND pg_acymailing_listsub.subid = t1.subid AND pg_acymailing_listsub.status=-1 LIMIT 1
) OR t1.subid not in (
select pg_acymailing_userstats.subid from pg_acymailing_userstats where pg_acymailing_userstats.subid = t1.subid and pg_acymailing_userstats.open > 0
)
);

什么问题?我认为需要使用子查询,但我不知道如何在我的查询中使用它。

最佳答案

我承认错误消息很难理解。它实际上应该是删除。但问题在于 EXISTS 子查询中对 pg_acymailing_listsub 的引用,而该引用位于您要从中删除的表中。

MySQL 不允许在子查询中引用要从 中删除的表。 。 。除非你使用物化黑客。

但是,通过向 FROM 添加另一个 JOIN 子句应该很容易解决这个问题。您似乎知道该怎么做。

关于mysql - "You can' t 在 FROM 子句中指定目标表 't1' 进行更新。如何删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41018360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com