2012-10-21 5 views
0

Windows의 mysql 클라이언트 셸에서이를 실행했습니다. 나는 그 문제가 무엇인지 이해하지 못한다. 나는 delete from PageInfo where id이 맞다는 것을 안다. 하위 쿼리가 정확한지 알고 있습니다. 나는 정확하다고 생각하지만 자주 사용하지는 않습니다. 이 모든 것은 정확 해 보이지만 어딘가에 문제가 생깁니다. 오류 메시지를 이해할 수 없습니다.delete from where 하위 쿼리 오류로 인한 오류

서브 쿼리가 반환하는 모든 ID는 어떻게 삭제합니까?

mysql> delete from PageInfo where id in (select max(id) from PageInfo where pid 
>=2758000 AND pid<2758100 group by pid having count(pid)>1); 
ERROR 1093 (HY000): You can't specify target table 'PageInfo' for update in FROM 
clause 

답변

2

mysql website. 동일한 테이블 수정 선택과 같이 허용되지 않는 한

이 오류는 테이블을 수정하고 부질 동일한 테이블에서 선택하는 시도는 다음과 같은 경우에 발생

Incorrectly used table in subquery: 

Error 1093 (ER_UPDATE_TABLE_USED) 
    SQLSTATE = HY000 
    Message = "You can't specify target table 'x' 
for update in FROM clause" 
: 
+0

풍어처럼 할 수 ..... –

+0

이놈이 내가 들어 코드 –

4

에서

대한 추가 정보를 원하시면 당신이

delete from PageInfo where id = (SELECT maxid FROM (select max(id) as maxid from PageInfo where pid >=2758000 AND pid<2758100 group by pid having count(pid)>1) as tmp) 
+0

을 체포 할 필요가 의미 다른 쿼리를했는데'ERROR 1206 (HY000) : 총 잠금 수가 잠금 테이블 크기를 초과했습니다. ' 나는 코드로 그것을 할 필요가 있다고 생각한다. 어쨌든 +1 –

관련 문제