如果ownerid在玩家ID中不存在,我尝试运行此查询以删除行会行。
DELETE FROM guilds WHERE ownerid NOT IN (SELECT id FROM players);
但是我得到这个错误:
无法更新存储函数/触发器中的表“玩家”,因为调用该存储函数/触发器的语句已使用该表。
我也尝试了
NOT EXISTS
和LEFT JOIN
但我得到了相同的结果。在这种情况下我该怎么办?提前致谢。
最佳答案
您的查询还删除了players
表,实际上删除了所有内容。由于players
表受到某种方式的保护,因此您会收到该错误,因此无需触摸它,请尝试执行此操作。
DELETE FROM guilds WHERE ownerid != ALL(SELECT id FROM players);