错误 1093 指出,如果您的子查询查询您要从中删除的表,则您无法使用子查询进行更新或删除。
所以你不能做
delete from table1 where id in (select something from table1 where condition) ;
好的,解决该限制的最佳方法是什么(假设您确实需要子查询来执行删除并且不能完全消除自引用子查询?)
编辑:
以下是感兴趣的人的查询:
mysql> desc 邻接; +---------+---------+------+-----+---------+------ -+ | 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 | +---------+---------+------+-----+---------+------ -+ | 家长 | 整数(11) | 否 | 优先级 | 空 | | | 孩子| 整数(11) | 否 | 优先级 | 空 | | | 路径长度 | 整数(11) | 否 | | 空 | | +---------+---------+------+-----+---------+------ -+ -- 查询将 ——告诉我所有的孩子 ——别再想我的老父母了 ——仍然是他们的父母 从邻接中删除 父母在哪里 ( -- 我所有的父母,祖父母 选择父母 从邻接 孩子=@我 和父母!=@我 ) ——只涉及我的关系 -- 关心我孩子的祖父母 和孩子在 ( ——带上我所有的孩子 选择孩子 从邻接 哪里父母=@我 ) ;
所以到目前为止我尝试的是创建一个名为的临时表adjsToDelete
create temporary table adjsToRemove( parent int, child int ) ;
insert into adjsToRemove...
所以现在我有一个要删除的关系集合,其中父/子对每个唯一地标识要删除的行。但是我现在如何从邻接表中删除每一对呢?
看来我需要为auto_increment
每个条目添加一个唯一的 ed 键adjacencies
,对吗?