내가 예를 들어, 부모와 이러한 기록의 자녀를 일부 데이터를 삭제해야하지만, 참조, SQL 쿼리에 문제가 다음과 같다 있습니다MySQL의 쿼리 오류
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
테이블에서 데이터를 삭제하려면 어떻게해야합니까?
다음 링크는 업데이트 쿼리를위한 것이지만 삭제를 위해 쉽게 수정할 수 있습니다. http://stackoverflow.com/questions/4268416/sql-update-with-sub-query-that-references-the-same -table-in-mysql –