mysql查询错误_MySQL查询错误

在MySQL中尝试删除菜单项时遇到了错误,该菜单项具有子项。通常,先选择要删除的记录,包括父项和子项,然后尝试删除时会遇到'You can't specify target table 'menu' for update in FROM clause'的错误。这个问题涉及到级联删除。解决方案可能涉及使用JOIN或子查询来正确地删除相关记录。
摘要由CSDN通过智能技术生成

我有一个sql查询的问题如下,我需要删除一些数据,但引用这些记录的父级和子元素,例如:

mysql> select * from menu;

+--------+-------------------+-----------+-----------------------------------+

| menuId | menuNome | menuIdPai | menuLink |

+--------+-------------------+-----------+-----------------------------------+

| 1 | A Empresa | 0 | empresa.php |

| 2 | Sobre Nós | 1 | sobre.php |

| 3 | Objetivos | 1 | objetivos.php |

| 4 | Contato | 0 | contato.php |

| 5 | Produtos | 0 | produtos.php |

| 6 | Informática | 5 | categoria.php?cat=informatica |

| 7 | Missão da Empresa | 2 | missao.php |

| 8 | Visão da Empresa | 2 | visao.php |

| 9 | Televisão | 5 | categoria.php?cat=televisao |

| 10 | Computadores | 6 | subcategoria.php?sub=computadores |

| 11 | Monitores | 6 | subcategoria.php?sub=monitores |

+--------+-------------------+-----------+-----------------------------------+我删除了ID为5的查询菜单及其所有子女及其亲属

如果我做了一个正常的选择,想要删除的数据,我通常是结果,请参阅:

mysql> select * from menu where menuId = 5 or menuIdPai in( ( select menuId from menu where menuIdPai = 5 or menuId = 5 ) );

+--------+--------------+-----------+-----------------------------------+

| menuId | menuNome | menuIdPai | menuLink |

+--------+--------------+-----------+-----------------------------------+

| 5 | Produtos | 0 | produtos.php |

| 6 | Informática | 5 | categoria.php?cat=informatica |

| 9 | Televisão | 5 | categoria.php?cat=televisao |

| 10 | Computadores | 6 | subcategoria.php?sub=computadores |

| 11 | Monitores | 6 | subcategoria.php?sub=monitores |

+--------+--------------+-----------+-----------------------------------+

5 rows in set (0.00 sec)但是当我删除时:

mysql> delete from menu where menuId = 5 or menuIdPai in( ( select menuId from menu where menuIdPai = 5 or menuId = 5 ) );

ERROR 1093 (HY000): You can't specify target table 'menu' for update in FROM clause我如何从表中删除数据,他们在select中返回?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值